@cubejs-client/core 1.6.17 → 1.6.18

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\n// A custom locale for internal use that doesn't affect the global dayjs instance\nconst cubeInternalLocale = 'cube-internal-en';\nconst customLocale = {\n ...en,\n name: cubeInternalLocale,\n weekStart: 1\n};\n(dayjs as any).Ls[cubeInternalLocale] = customLocale;\n\nexport type SqlInterval = string;\n\n// TODO: Define a better type as unitOfTime.DurationConstructor in moment.js\nexport type ParsedInterval = Record<string, number>;\n\nexport type Granularity = {\n interval: SqlInterval;\n origin?: string;\n offset?: SqlInterval;\n};\n\nexport type DayRange = {\n by: (value: any) => dayjs.Dayjs[];\n snapTo: (value: any) => DayRange;\n start: dayjs.Dayjs;\n end: dayjs.Dayjs;\n};\n\nexport type TimeDimensionPredefinedGranularity =\n 'second'\n | 'minute'\n | 'hour'\n | 'day'\n | 'week'\n | 'month'\n | 'quarter'\n | 'year';\n\nexport type TimeDimensionGranularity = TimeDimensionPredefinedGranularity | string;\n\nexport type TGranularityMap = {\n name: TimeDimensionGranularity | undefined;\n title: string;\n};\n\nexport const GRANULARITIES: TGranularityMap[] = [\n { name: undefined, title: 'w/o grouping' },\n { name: 'second', title: 'Second' },\n { name: 'minute', title: 'Minute' },\n { name: 'hour', title: 'Hour' },\n { name: 'day', title: 'Day' },\n { name: 'week', title: 'Week' },\n { name: 'month', title: 'Month' },\n { name: 'quarter', title: 'Quarter' },\n { name: 'year', title: 'Year' },\n];\n\nexport const DEFAULT_GRANULARITY = 'day';\n\n// When granularity is week, weekStart Value must be 1. However, since the client can change it globally\n// (https://day.js.org/docs/en/i18n/changing-locale) So the function below has been added.\nexport const internalDayjs = (...args: any[]): dayjs.Dayjs => dayjs(...args).locale(cubeInternalLocale);\n\nexport const TIME_SERIES: Record<string, (range: DayRange) => string[]> = {\n day: (range) => range.by('d').map(d => d.format('YYYY-MM-DDT00:00:00.000')),\n month: (range) => range.snapTo('month').by('M').map(d => d.format('YYYY-MM-01T00:00:00.000')),\n year: (range) => range.snapTo('year').by('y').map(d => d.format('YYYY-01-01T00:00:00.000')),\n hour: (range) => range.by('h').map(d => d.format('YYYY-MM-DDTHH:00:00.000')),\n minute: (range) => range.by('m').map(d => d.format('YYYY-MM-DDTHH:mm:00.000')),\n second: (range) => range.by('s').map(d => d.format('YYYY-MM-DDTHH:mm:ss.000')),\n week: (range) => range.snapTo('week').by('w').map(d => d.startOf('week').format('YYYY-MM-DDT00:00:00.000')),\n quarter: (range) => range.snapTo('quarter').by('quarter').map(d => d.startOf('quarter').format(\n 'YYYY-MM-DDT00:00:00.000'\n )),\n};\n\nexport const isPredefinedGranularity = (granularity: TimeDimensionGranularity): boolean => !!TIME_SERIES[granularity];\n\nexport const DateRegex = /^\\d\\d\\d\\d-\\d\\d-\\d\\d$/;\nexport const LocalDateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z?$/;\n\n/**\n * Parse PostgreSQL-like interval string into object\n * E.g. '2 years 15 months 100 weeks 99 hours 15 seconds'\n * Negative units are also supported\n * E.g. '-2 months 5 days -10 hours'\n *\n * TODO: It's copy/paste of parseSqlInterval from @cubejs-backend/shared [time.ts]\n * It's not referenced to omit imports of moment.js staff.\n * Probably one day we should choose one implementation and reuse it in other places.\n */\nexport function parseSqlInterval(intervalStr: SqlInterval): ParsedInterval {\n const interval: ParsedInterval = {};\n const parts = intervalStr.split(/\\s+/);\n\n for (let i = 0; i < parts.length; i += 2) {\n const value = parseInt(parts[i], 10);\n const unit = parts[i + 1];\n\n // Remove ending 's' (e.g., 'days' -> 'day')\n const singularUnit = unit.endsWith('s') ? unit.slice(0, -1) : unit;\n interval[singularUnit] = value;\n }\n\n return interval;\n}\n\n/**\n * Adds interval to provided date.\n * TODO: It's copy/paste of addInterval from @cubejs-backend/shared [time.ts]\n * but operates with dayjs instead of moment.js\n * @param {dayjs} date\n * @param interval\n * @returns {dayjs}\n */\nexport function addInterval(date: dayjs.Dayjs, interval: ParsedInterval): dayjs.Dayjs {\n let res = date.clone();\n\n Object.entries(interval).forEach(([key, value]) => {\n res = res.add(value, key);\n });\n\n return res;\n}\n\n/**\n * Adds interval to provided date.\n * TODO: It's copy/paste of subtractInterval from @cubejs-backend/shared [time.ts]\n * but operates with dayjs instead of moment.js\n * @param {dayjs} date\n * @param interval\n * @returns {dayjs}\n */\nexport function subtractInterval(date: dayjs.Dayjs, interval: ParsedInterval): dayjs.Dayjs {\n let res = date.clone();\n\n Object.entries(interval).forEach(([key, value]) => {\n res = res.subtract(value, key);\n });\n\n return res;\n}\n\n/**\n * Returns the closest date prior to date parameter aligned with the origin point\n * TODO: It's copy/paste of alignToOrigin from @cubejs-backend/shared [time.ts]\n * but operates with dayjs instead of moment.js\n */\nfunction alignToOrigin(startDate: dayjs.Dayjs, interval: ParsedInterval, origin: dayjs.Dayjs): dayjs.Dayjs {\n let alignedDate = startDate.clone();\n let intervalOp;\n let isIntervalNegative = false;\n\n let offsetDate = addInterval(origin, interval);\n\n // The easiest way to check the interval sign\n if (offsetDate.isBefore(origin)) {\n isIntervalNegative = true;\n }\n\n offsetDate = origin.clone();\n\n if (startDate.isBefore(origin)) {\n intervalOp = isIntervalNegative ? addInterval : subtractInterval;\n\n while (offsetDate.isAfter(startDate)) {\n offsetDate = intervalOp(offsetDate, interval);\n }\n alignedDate = offsetDate;\n } else {\n intervalOp = isIntervalNegative ? subtractInterval : addInterval;\n\n while (offsetDate.isBefore(startDate)) {\n alignedDate = offsetDate.clone();\n offsetDate = intervalOp(offsetDate, interval);\n }\n\n if (offsetDate.isSame(startDate)) {\n alignedDate = offsetDate;\n }\n }\n\n return alignedDate;\n}\n\nexport const dayRange = (from: any, to: any, annotations?: Record<string, { granularity?: Granularity }>): DayRange => ({\n by: (value: any) => {\n const results = [];\n\n let start = internalDayjs(from);\n const end = internalDayjs(to);\n\n while (start.startOf(value).isBefore(end) || start.isSame(end)) {\n results.push(start);\n start = start.add(1, value);\n }\n\n return results;\n },\n snapTo: (value: any): DayRange => {\n // Check if this is a custom granularity\n if (!isPredefinedGranularity(value) && annotations) {\n // Try to find the custom granularity metadata\n // The annotation key might be in format \"Cube.dimension.granularity\"\n // So we need to search through all annotations\n let customGranularity: Granularity | undefined;\n\n for (const key of Object.keys(annotations)) {\n if (key.endsWith(`.${value}`) && annotations[key].granularity) {\n customGranularity = annotations[key].granularity;\n break;\n }\n }\n\n if (customGranularity?.interval) {\n // For custom granularities, calculate the range for the bucket\n const intervalParsed = parseSqlInterval(customGranularity.interval);\n let intervalStart = internalDayjs(from);\n\n // origin and offset are mutually exclusive\n // If either is specified, align to it\n if (customGranularity.origin || customGranularity.offset) {\n let origin;\n if (customGranularity.origin) {\n // Absolute origin time\n origin = internalDayjs(customGranularity.origin);\n } else {\n // offset is relative to start of year\n origin = addInterval(internalDayjs().startOf('year'), parseSqlInterval(customGranularity.offset!));\n }\n\n // Align the value to the origin to find the actual bucket start\n intervalStart = alignToOrigin(intervalStart, intervalParsed, origin);\n }\n\n // End is start + interval - 1 millisecond (to stay within the bucket)\n const intervalEnd = addInterval(intervalStart, intervalParsed).subtract(1, 'millisecond');\n\n return dayRange(intervalStart, intervalEnd, annotations);\n }\n }\n\n // Default behavior for predefined granularities\n return dayRange(internalDayjs(from).startOf(value), internalDayjs(to).endOf(value), annotations);\n },\n start: internalDayjs(from),\n end: internalDayjs(to),\n});\n\n/**\n * Returns the time series points for the custom interval\n * TODO: It's almost a copy/paste of timeSeriesFromCustomInterval from\n * @cubejs-backend/shared [time.ts] but operates with dayjs instead of moment.js\n */\nexport const timeSeriesFromCustomInterval = (from: string, to: string, granularity: Granularity): string[] => {\n const intervalParsed = parseSqlInterval(granularity.interval);\n const start = internalDayjs(from);\n const end = internalDayjs(to);\n let origin = granularity.origin ? internalDayjs(granularity.origin) : internalDayjs().startOf('year');\n if (granularity.offset) {\n origin = addInterval(origin, parseSqlInterval(granularity.offset));\n }\n let alignedStart = alignToOrigin(start, intervalParsed, origin);\n\n const dates = [];\n\n while (alignedStart.isBefore(end) || alignedStart.isSame(end)) {\n dates.push(alignedStart.format('YYYY-MM-DDTHH:mm:ss.000'));\n alignedStart = addInterval(alignedStart, intervalParsed);\n }\n\n return dates;\n};\n\n/**\n * Returns the lowest time unit for the interval\n */\nexport const diffTimeUnitForInterval = (interval: string): string => {\n if (/second/i.test(interval)) {\n return 'second';\n } else if (/minute/i.test(interval)) {\n return 'minute';\n } else if (/hour/i.test(interval)) {\n return 'hour';\n } else if (/day/i.test(interval)) {\n return 'day';\n } else if (/week/i.test(interval)) {\n return 'day';\n } else if (/month/i.test(interval)) {\n return 'month';\n } else if (/quarter/i.test(interval)) {\n return 'month';\n } else /* if (/year/i.test(interval)) */ {\n return 'year';\n }\n};\n\nconst granularityOrder = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second'];\n\nexport const minGranularityForIntervals = (i1: string, i2: string): string => {\n const g1 = diffTimeUnitForInterval(i1);\n const g2 = diffTimeUnitForInterval(i2);\n const g1pos = granularityOrder.indexOf(g1);\n const g2pos = granularityOrder.indexOf(g2);\n\n if (g1pos > g2pos) {\n return g1;\n }\n\n return g2;\n};\n\nexport const granularityFor = (dateStr: string): string => {\n const dayjsDate = internalDayjs(dateStr);\n const month = dayjsDate.month();\n const date = dayjsDate.date();\n const hours = dayjsDate.hour();\n const minutes = dayjsDate.minute();\n const seconds = dayjsDate.second();\n const milliseconds = dayjsDate.millisecond();\n const weekDay = dayjsDate.isoWeekday();\n\n if (\n month === 0 &&\n date === 1 &&\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'year';\n } else if (\n date === 1 &&\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'month';\n } else if (\n weekDay === 1 &&\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'week';\n } else if (\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'day';\n } else if (\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'hour';\n } else if (\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'minute';\n } else if (\n milliseconds === 0\n ) {\n return 'second';\n }\n\n return 'second'; // TODO return 'millisecond';\n};\n","import { clone, equals, fromPairs, indexBy, prop, toPairs } from 'ramda';\nimport { DeeplyReadonly } from './index';\nimport { DEFAULT_GRANULARITY } from './time';\nimport {\n Filter,\n PivotConfig,\n Query,\n QueryOrder,\n TDefaultHeuristicsOptions,\n TDefaultHeuristicsResponse,\n TDefaultHeuristicsState,\n TFlatFilter,\n TOrderMember,\n TQueryOrderArray,\n TQueryOrderObject,\n TSourceAxis\n} from './types';\n\nexport function removeEmptyQueryFields(_query: DeeplyReadonly<Query>) {\n const query = _query || {};\n\n return fromPairs(\n toPairs(query).flatMap(([key, value]) => {\n if (\n ['measures', 'dimensions', 'segments', 'timeDimensions', 'filters'].includes(key)\n ) {\n if (Array.isArray(value) && value.length === 0) {\n return [];\n }\n }\n\n if (key === 'order' && value) {\n if (Array.isArray(value) && value.length === 0) {\n return [];\n } else if (!Object.keys(value).length) {\n return [];\n }\n }\n\n return [[key, value]];\n })\n );\n}\n\nexport function validateQuery(_query: DeeplyReadonly<Query> | null | undefined): Query {\n const query = _query || {};\n\n return removeEmptyQueryFields({\n ...query,\n filters: (query.filters || []).filter((f) => 'operator' in f),\n timeDimensions: (query.timeDimensions || []).filter(\n (td) => !(!td.dateRange && !td.granularity)\n ),\n });\n}\n\nexport function areQueriesEqual(query1: DeeplyReadonly<Query> | null, query2: DeeplyReadonly<Query> | null): boolean {\n return (\n equals(\n Object.entries(query1?.order || {}),\n Object.entries(query2?.order || {})\n ) && equals(query1, query2)\n );\n}\n\nexport function defaultOrder(query: DeeplyReadonly<Query>): { [key: string]: QueryOrder } {\n const granularity = (query.timeDimensions || []).find((d) => d.granularity);\n\n if (granularity) {\n return {\n [granularity.dimension]: 'asc',\n };\n } else if (\n (query.measures || []).length > 0 &&\n (query.dimensions || []).length > 0\n ) {\n return {\n [query.measures![0]]: 'desc',\n };\n } else if ((query.dimensions || []).length > 0) {\n return {\n [query.dimensions![0]]: 'asc',\n };\n }\n\n return {};\n}\n\nexport function defaultHeuristics(\n newState: TDefaultHeuristicsState,\n oldQuery: Query,\n options: TDefaultHeuristicsOptions\n): TDefaultHeuristicsResponse {\n const { query, ...props } = clone(newState);\n const { meta, sessionGranularity } = options;\n const granularity = sessionGranularity || DEFAULT_GRANULARITY;\n\n let state: TDefaultHeuristicsResponse = {\n shouldApplyHeuristicOrder: false,\n pivotConfig: null,\n query,\n ...props,\n };\n\n let newQuery = null;\n if (!areQueriesEqual(query, oldQuery)) {\n newQuery = query;\n }\n\n if (Array.isArray(newQuery) || Array.isArray(oldQuery)) {\n return {\n shouldApplyHeuristicOrder: false,\n pivotConfig: null,\n ...newState,\n };\n }\n\n if (newQuery) {\n if (\n (oldQuery.timeDimensions || []).length === 1 &&\n (newQuery.timeDimensions || []).length === 1 &&\n newQuery.timeDimensions![0].granularity &&\n oldQuery.timeDimensions![0].granularity !==\n newQuery.timeDimensions![0].granularity\n ) {\n state = {\n ...state,\n sessionGranularity: newQuery.timeDimensions![0].granularity,\n };\n }\n\n if (\n ((oldQuery.measures || []).length === 0 &&\n (newQuery.measures || []).length > 0) ||\n ((oldQuery.measures || []).length === 1 &&\n (newQuery.measures || []).length === 1 &&\n oldQuery.measures![0] !== newQuery.measures![0])\n ) {\n const [td] = newQuery.timeDimensions || [];\n const defaultTimeDimension = meta.defaultTimeDimensionNameFor(\n newQuery.measures![0]\n );\n newQuery = {\n ...newQuery,\n timeDimensions: defaultTimeDimension\n ? [\n {\n dimension: defaultTimeDimension,\n granularity: td?.granularity || granularity,\n dateRange: td?.dateRange,\n },\n ]\n : [],\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: defaultTimeDimension ? 'line' : 'number',\n };\n }\n\n if (\n (oldQuery.dimensions || []).length === 0 &&\n (newQuery.dimensions || []).length > 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: (newQuery.timeDimensions || []).map((td) => ({\n ...td,\n granularity: undefined,\n })),\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: 'table',\n };\n }\n\n if (\n (oldQuery.dimensions || []).length > 0 &&\n (newQuery.dimensions || []).length === 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: (newQuery.timeDimensions || []).map((td) => ({\n ...td,\n granularity: td.granularity || granularity,\n })),\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: (newQuery.timeDimensions || []).length ? 'line' : 'number',\n };\n }\n\n if (\n ((oldQuery.dimensions || []).length > 0 ||\n (oldQuery.measures || []).length > 0) &&\n (newQuery.dimensions || []).length === 0 &&\n (newQuery.measures || []).length === 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: [],\n filters: [],\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n sessionGranularity: null,\n };\n }\n return state;\n }\n\n if (state.chartType) {\n const newChartType = state.chartType;\n if (\n (newChartType === 'line' || newChartType === 'area') &&\n (oldQuery.timeDimensions || []).length === 1 &&\n !oldQuery.timeDimensions![0].granularity\n ) {\n const [td] = oldQuery.timeDimensions!;\n return {\n ...state,\n pivotConfig: null,\n query: {\n ...oldQuery,\n timeDimensions: [{ ...td, granularity }],\n },\n };\n }\n\n if (\n (newChartType === 'pie' ||\n newChartType === 'table' ||\n newChartType === 'number') &&\n (oldQuery.timeDimensions || []).length === 1 &&\n oldQuery.timeDimensions![0].granularity\n ) {\n const [td] = oldQuery.timeDimensions!;\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: {\n ...oldQuery,\n timeDimensions: [{ ...td, granularity: undefined }],\n },\n };\n }\n }\n\n return state;\n}\n\nexport function isQueryPresent(query: DeeplyReadonly<Query | Query[]> | null | undefined): boolean {\n if (!query) {\n return false;\n }\n\n return (Array.isArray(query) ? query : [query]).every(\n (q) => q.measures?.length || q.dimensions?.length || q.timeDimensions?.length\n );\n}\n\nexport function movePivotItem(\n pivotConfig: PivotConfig,\n sourceIndex: number,\n destinationIndex: number,\n sourceAxis: TSourceAxis,\n destinationAxis: TSourceAxis\n): PivotConfig {\n const nextPivotConfig = {\n ...pivotConfig,\n x: [...(pivotConfig.x || [])],\n y: [...(pivotConfig.y || [])],\n };\n const id = pivotConfig[sourceAxis]![sourceIndex];\n const lastIndex = nextPivotConfig[destinationAxis].length - 1;\n\n if (id === 'measures') {\n destinationIndex = lastIndex + 1;\n } else if (\n sourceAxis === destinationAxis &&\n destinationIndex >= lastIndex &&\n nextPivotConfig[destinationAxis][lastIndex] === 'measures'\n ) {\n destinationIndex = lastIndex - 1;\n } else if (\n sourceAxis !== destinationAxis &&\n destinationIndex > lastIndex &&\n nextPivotConfig[destinationAxis][lastIndex] === 'measures'\n ) {\n destinationIndex = lastIndex;\n }\n\n nextPivotConfig[sourceAxis].splice(sourceIndex, 1);\n nextPivotConfig[destinationAxis].splice(destinationIndex, 0, id);\n\n return nextPivotConfig;\n}\n\nexport function moveItemInArray<T = any>(list: T[], sourceIndex: number, destinationIndex: number): T[] {\n const result = [...list];\n const [removed] = result.splice(sourceIndex, 1);\n result.splice(destinationIndex, 0, removed);\n\n return result;\n}\n\nexport function flattenFilters(filters: Filter[] = []): TFlatFilter[] {\n return filters.reduce<TFlatFilter[]>((memo, filter) => {\n if ('or' in filter) {\n return [...memo, ...flattenFilters(filter.or)];\n }\n\n if ('and' in filter) {\n return [...memo, ...flattenFilters(filter.and)];\n }\n\n return [...memo, filter];\n }, []);\n}\n\nexport function getQueryMembers(query: DeeplyReadonly<Query> = {}): string[] {\n const keys = ['measures', 'dimensions', 'segments'] as const;\n const members = new Set<string>();\n\n keys.forEach((key) => (query[key] || []).forEach((member) => members.add(member)));\n (query.timeDimensions || []).forEach((td) => members.add(td.dimension));\n\n const filters = flattenFilters(query.filters as Filter[]);\n filters.forEach((filter) => {\n const member = filter.dimension || filter.member;\n if (typeof member === 'string') {\n members.add(member);\n }\n });\n\n return [...members];\n}\n\nexport function getOrderMembersFromOrder(orderMembers: any[], order: TQueryOrderObject | TQueryOrderArray): TOrderMember[] {\n const ids = new Set<string>();\n const indexedOrderMembers = indexBy(prop('id'), orderMembers);\n const entries = Array.isArray(order) ? order : Object.entries(order || {});\n const nextOrderMembers: TOrderMember[] = [];\n\n entries.forEach(([memberId, currentOrder]) => {\n if (currentOrder !== 'none' && indexedOrderMembers[memberId]) {\n ids.add(memberId);\n nextOrderMembers.push({\n ...indexedOrderMembers[memberId],\n order: currentOrder,\n });\n }\n });\n orderMembers.forEach((member) => {\n if (!ids.has(member.id)) {\n nextOrderMembers.push({\n ...member,\n order: member.order || 'none',\n });\n }\n });\n\n return nextOrderMembers;\n}\n\nexport function aliasSeries(values: string[], index: number, pivotConfig?: Partial<PivotConfig>, duplicateMeasures: Set<string> = new Set()) {\n const nonNullValues = values.filter((value: any) => value != null);\n\n if (pivotConfig?.aliasSeries?.[index]) {\n return [pivotConfig.aliasSeries[index], ...nonNullValues];\n } else if (duplicateMeasures.has(nonNullValues[0])) {\n return [index, ...nonNullValues];\n }\n\n return nonNullValues;\n}\n","import dayjs from 'dayjs';\nimport {\n groupBy, pipe, fromPairs, uniq, map, dropLast, equals, reduce, minBy, maxBy, clone, mergeDeepLeft,\n flatten,\n} from 'ramda';\n\nimport { aliasSeries } from './utils';\nimport {\n DateRegex,\n dayRange,\n internalDayjs,\n isPredefinedGranularity,\n LocalDateRegex,\n TIME_SERIES,\n timeSeriesFromCustomInterval\n} from './time';\nimport {\n Annotation,\n ChartPivotRow, DateRange,\n DrillDownLocator,\n LoadResponse,\n LoadResponseResult, Pivot,\n PivotConfig, PivotConfigFull,\n PivotQuery,\n PivotRow,\n Query,\n QueryAnnotations, QueryType,\n SerializedResult,\n Series,\n SeriesNamesColumn,\n TableColumn,\n TimeDimension\n} from './types';\n\nconst groupByToPairs = function groupByToPairsImpl<T, K>(keyFn: (item: T) => K): (data: T[]) => [K, T[]][] {\n const acc = new Map();\n\n return (data) => {\n data.forEach((row) => {\n const key = keyFn(row);\n\n if (!acc.has(key)) {\n acc.set(key, []);\n }\n\n acc.get(key).push(row);\n });\n\n return Array.from(acc.entries());\n };\n};\n\nconst unnest = (arr: any[][]): any[] => {\n const res: any[] = [];\n arr.forEach((subArr) => {\n subArr.forEach(element => res.push(element));\n });\n\n return res;\n};\n\nexport const QUERY_TYPE: Record<string, QueryType> = {\n REGULAR_QUERY: 'regularQuery',\n COMPARE_DATE_RANGE_QUERY: 'compareDateRangeQuery',\n BLENDING_QUERY: 'blendingQuery',\n};\n\nexport type ResultSetOptions = {\n parseDateMeasures?: boolean;\n};\n\n/**\n * Provides a convenient interface for data manipulation.\n */\nexport default class ResultSet<T extends Record<string, any> = any> {\n private readonly loadResponse: LoadResponse<T>;\n\n private readonly loadResponses: LoadResponseResult<T>[];\n\n private readonly queryType: QueryType;\n\n private readonly parseDateMeasures: boolean | undefined;\n\n private readonly options: {};\n\n private readonly backwardCompatibleData: Record<string, any>[][];\n\n public static measureFromAxis(axisValues: string[]): string {\n return axisValues[axisValues.length - 1];\n }\n\n public static timeDimensionMember(td: TimeDimension) {\n return `${td.dimension}.${td.granularity}`;\n }\n\n /**\n * ```js\n * import { ResultSet } from '@cubejs-client/core';\n *\n * const resultSet = await cubeApi.load(query);\n * // You can store the result somewhere\n * const tmp = resultSet.serialize();\n *\n * // and restore it later\n * const resultSet = ResultSet.deserialize(tmp);\n * ```\n * @param data the result of [serialize](#result-set-serialize)\n * @param options\n */\n public static deserialize<TData extends Record<string, any> = any>(data: SerializedResult, options?: Object): ResultSet<TData> {\n return new ResultSet(data.loadResponse, options);\n }\n\n public constructor(loadResponse: LoadResponse<T> | LoadResponseResult<T>, options: ResultSetOptions = {}) {\n if ('queryType' in loadResponse && loadResponse.queryType != null) {\n this.loadResponse = loadResponse;\n this.queryType = loadResponse.queryType;\n this.loadResponses = loadResponse.results;\n } else {\n this.queryType = QUERY_TYPE.REGULAR_QUERY;\n this.loadResponse = {\n ...loadResponse,\n pivotQuery: {\n ...loadResponse.query,\n queryType: this.queryType\n }\n } as LoadResponse<T>;\n this.loadResponses = [loadResponse as LoadResponseResult<T>];\n }\n\n if (!Object.values(QUERY_TYPE).includes(this.queryType)) {\n throw new Error('Unknown query type');\n }\n\n this.parseDateMeasures = options.parseDateMeasures;\n this.options = options;\n\n this.backwardCompatibleData = [];\n }\n\n /**\n * Returns a measure drill down query.\n *\n * Provided you have a measure with the defined `drillMembers` on the `Orders` cube\n * ```js\n * measures: {\n * count: {\n * type: `count`,\n * drillMembers: [Orders.status, Users.city, count],\n * },\n * // ...\n * }\n * ```\n *\n * Then you can use the `drillDown` method to see the rows that contribute to that metric\n * ```js\n * resultSet.drillDown(\n * {\n * xValues,\n * yValues,\n * },\n * // you should pass the `pivotConfig` if you have used it for axes manipulation\n * pivotConfig\n * )\n * ```\n *\n * the result will be a query with the required filters applied and the dimensions/measures filled out\n * ```js\n * {\n * measures: ['Orders.count'],\n * dimensions: ['Orders.status', 'Users.city'],\n * filters: [\n * // dimension and measure filters\n * ],\n * timeDimensions: [\n * //...\n * ]\n * }\n * ```\n *\n * In case when you want to add `order` or `limit` to the query, you can simply spread it\n *\n * ```js\n * // An example for React\n * const drillDownResponse = useCubeQuery(\n * {\n * ...drillDownQuery,\n * limit: 30,\n * order: {\n * 'Orders.ts': 'desc'\n * }\n * },\n * {\n * skip: !drillDownQuery\n * }\n * );\n * ```\n * @returns Drill down query\n */\n public drillDown(drillDownLocator: DrillDownLocator, pivotConfig?: PivotConfig): Query | null {\n if (this.queryType === QUERY_TYPE.COMPARE_DATE_RANGE_QUERY) {\n throw new Error('compareDateRange drillDown query is not currently supported');\n }\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n throw new Error('Data blending drillDown query is not currently supported');\n }\n\n const { query } = this.loadResponses[0];\n const xValues = drillDownLocator?.xValues ?? [];\n const yValues = drillDownLocator?.yValues ?? [];\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);\n\n const values: string[][] = [];\n normalizedPivotConfig?.x.forEach((member, currentIndex) => values.push([member, xValues[currentIndex]]));\n normalizedPivotConfig?.y.forEach((member, currentIndex) => values.push([member, yValues[currentIndex]]));\n\n const { filters: parentFilters = [], segments = [] } = this.query();\n const { measures, timeDimensions: timeDimensionsAnnotation } = this.loadResponses[0].annotation;\n let [, measureName] = values.find(([member]) => member === 'measures') || [];\n\n if (measureName === undefined) {\n [measureName] = Object.keys(measures);\n }\n\n if (!(measures[measureName]?.drillMembers?.length ?? 0)) {\n return null;\n }\n\n const filters = [\n {\n member: measureName,\n operator: 'measureFilter',\n },\n ...parentFilters\n ];\n const timeDimensions = [];\n\n values.filter(([member]) => member !== 'measures')\n .forEach(([member, value]) => {\n const [cubeName, dimension, granularity] = member.split('.');\n\n if (granularity !== undefined) {\n // dayRange.snapTo now handles both predefined and custom granularities\n const range = dayRange(value, value, timeDimensionsAnnotation).snapTo(granularity);\n\n const originalTimeDimension = query.timeDimensions?.find((td) => td.dimension);\n\n let dateRange = [\n range.start,\n range.end\n ];\n\n if (originalTimeDimension?.dateRange) {\n const [originalStart, originalEnd] = originalTimeDimension.dateRange;\n\n dateRange = [\n dayjs(originalStart) > range.start ? dayjs(originalStart) : range.start,\n dayjs(originalEnd) < range.end ? dayjs(originalEnd) : range.end,\n ];\n }\n\n timeDimensions.push({\n dimension: [cubeName, dimension].join('.'),\n dateRange: dateRange.map((dt) => dt.format('YYYY-MM-DDTHH:mm:ss.SSS')),\n });\n } else if (value == null) {\n filters.push({\n member,\n operator: 'notSet',\n });\n } else {\n filters.push({\n member,\n operator: 'equals',\n values: [value.toString()],\n });\n }\n });\n\n if (\n timeDimensions.length === 0 &&\n Array.isArray(query.timeDimensions) &&\n query.timeDimensions.length > 0 &&\n query.timeDimensions[0].granularity == null\n ) {\n timeDimensions.push(query.timeDimensions[0]);\n }\n\n return {\n ...measures[measureName].drillMembersGrouped,\n filters,\n ...(segments.length > 0 ? { segments } : {}),\n timeDimensions,\n segments,\n timezone: query.timezone\n };\n }\n\n /**\n * Returns an array of series with key, title and series data.\n * ```js\n * // For the query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.series() will return\n * [\n * {\n * key: 'Stories.count',\n * title: 'Stories Count',\n * shortTitle: 'Count',\n * series: [\n * { x: '2015-01-01T00:00:00', value: 27120 },\n * { x: '2015-02-01T00:00:00', value: 25861 },\n * { x: '2015-03-01T00:00:00', value: 29661 },\n * //...\n * ],\n * },\n * ]\n * ```\n */\n public series<SeriesItem = any>(pivotConfig?: PivotConfig): Series<SeriesItem>[] {\n return this.seriesNames(pivotConfig).map(({ title, shortTitle, key }) => ({\n title,\n shortTitle,\n key,\n series: this.chartPivot(pivotConfig).map(({ x, ...obj }) => ({ value: obj[key], x }))\n } as Series<SeriesItem>));\n }\n\n private axisValues(axis: string[], resultIndex = 0) {\n const { query } = this.loadResponses[resultIndex];\n\n return (row: Record<string, any>) => {\n const value = (measure?: string) => axis\n .filter(d => d !== 'measures')\n .map((d: string) => {\n const val = row[d];\n return val != null ? val : null;\n })\n .concat(measure ? [measure] : []);\n\n if (axis.find(d => d === 'measures') && (query.measures || []).length) {\n return (query.measures || []).map(value);\n }\n\n return [value()];\n };\n }\n\n private axisValuesString(axisValues: (string | number)[], delimiter: string = ', '): string {\n const formatValue = (v: string | number) => {\n if (v == null) {\n return '∅';\n } else if (v === '') {\n return '[Empty string]';\n } else {\n return v;\n }\n };\n return axisValues.map(formatValue).join(delimiter);\n }\n\n public static getNormalizedPivotConfig(query?: PivotQuery, pivotConfig?: PivotConfig): PivotConfigFull {\n const defaultPivotConfig: PivotConfig = {\n x: [],\n y: [],\n fillMissingDates: true,\n joinDateRange: false\n };\n\n const {\n measures = [],\n dimensions = []\n } = query || {};\n\n const timeDimensions = (query?.timeDimensions || []).filter(td => !!td.granularity);\n\n pivotConfig = pivotConfig || (timeDimensions.length ? {\n x: timeDimensions.map(td => ResultSet.timeDimensionMember(td)),\n y: dimensions\n } : {\n x: dimensions,\n y: []\n });\n\n const normalizedPivotConfig = mergeDeepLeft(pivotConfig, defaultPivotConfig) as PivotConfigFull;\n\n const substituteTimeDimensionMembers = (axis: string[]) => axis.map(\n subDim => (\n (\n timeDimensions.find(td => td.dimension === subDim) &&\n !dimensions.find(d => d === subDim)\n ) ?\n ResultSet.timeDimensionMember((query?.timeDimensions || []).find(td => td.dimension === subDim)!) :\n subDim\n )\n );\n\n normalizedPivotConfig.x = substituteTimeDimensionMembers(normalizedPivotConfig.x);\n normalizedPivotConfig.y = substituteTimeDimensionMembers(normalizedPivotConfig.y);\n\n const allIncludedDimensions = normalizedPivotConfig.x.concat(normalizedPivotConfig.y);\n const allDimensions = timeDimensions.map(td => ResultSet.timeDimensionMember(td)).concat(dimensions);\n\n const dimensionFilter = (key: string) => allDimensions.includes(key) || key === 'measures';\n\n normalizedPivotConfig.x = normalizedPivotConfig.x.concat(\n allDimensions.filter(d => !allIncludedDimensions.includes(d) && d !== 'compareDateRange')\n )\n .filter(dimensionFilter);\n normalizedPivotConfig.y = normalizedPivotConfig.y.filter(dimensionFilter);\n\n if (!normalizedPivotConfig.x.concat(normalizedPivotConfig.y).find(d => d === 'measures')) {\n normalizedPivotConfig.y.push('measures');\n }\n\n if (dimensions.includes('compareDateRange') && !normalizedPivotConfig.y.concat(normalizedPivotConfig.x).includes('compareDateRange')) {\n normalizedPivotConfig.y.unshift('compareDateRange');\n }\n\n if (!measures.length) {\n normalizedPivotConfig.x = normalizedPivotConfig.x.filter(d => d !== 'measures');\n normalizedPivotConfig.y = normalizedPivotConfig.y.filter(d => d !== 'measures');\n }\n\n return normalizedPivotConfig;\n }\n\n public normalizePivotConfig(pivotConfig?: PivotConfig): PivotConfigFull {\n return ResultSet.getNormalizedPivotConfig(this.loadResponse.pivotQuery, pivotConfig);\n }\n\n public timeSeries(timeDimension: TimeDimension, resultIndex?: number, annotations?: Record<string, Annotation>) {\n if (!timeDimension.granularity) {\n return null;\n }\n\n let dateRange: DateRange | null | undefined;\n dateRange = timeDimension.dateRange;\n\n if (!dateRange) {\n const member = ResultSet.timeDimensionMember(timeDimension);\n const rawRows: Record<string, any>[] = this.timeDimensionBackwardCompatibleData(resultIndex || 0);\n\n const dates = rawRows\n .map(row => {\n const value = row[member];\n return value ? internalDayjs(value) : null;\n })\n .filter((d): d is dayjs.Dayjs => Boolean(d));\n\n dateRange = dates.length && [\n (reduce(minBy((d: dayjs.Dayjs): Date => d.toDate()), dates[0], dates)).toString(),\n (reduce(maxBy((d: dayjs.Dayjs): Date => d.toDate()), dates[0], dates)).toString(),\n ] || null;\n }\n\n if (!dateRange) {\n return null;\n }\n\n const padToDay = timeDimension.dateRange ?\n (timeDimension.dateRange as string[]).find(d => d.match(DateRegex)) :\n !['hour', 'minute', 'second'].includes(timeDimension.granularity);\n\n const [start, end] = dateRange;\n const range = dayRange(start, end, annotations);\n\n if (isPredefinedGranularity(timeDimension.granularity)) {\n return TIME_SERIES[timeDimension.granularity](\n padToDay ? range.snapTo('d') : range\n );\n }\n\n if (!annotations?.[`${timeDimension.dimension}.${timeDimension.granularity}`]) {\n throw new Error(`Granularity \"${timeDimension.granularity}\" not found in time dimension \"${timeDimension.dimension}\"`);\n }\n\n return timeSeriesFromCustomInterval(\n start, end, annotations[`${timeDimension.dimension}.${timeDimension.granularity}`].granularity!\n );\n }\n\n /**\n * Base method for pivoting [ResultSet](#result-set) data.\n * Most of the time shouldn't be used directly and [chartPivot](#result-set-chart-pivot)\n * or [tablePivot](#table-pivot) should be used instead.\n *\n * You can find the examples of using the `pivotConfig` [here](#types-pivot-config)\n * ```js\n * // For query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-03-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.pivot({ x: ['Stories.time'], y: ['measures'] }) will return\n * [\n * {\n * xValues: [\"2015-01-01T00:00:00\"],\n * yValuesArray: [\n * [['Stories.count'], 27120]\n * ]\n * },\n * {\n * xValues: [\"2015-02-01T00:00:00\"],\n * yValuesArray: [\n * [['Stories.count'], 25861]\n * ]\n * },\n * {\n * xValues: [\"2015-03-01T00:00:00\"],\n * yValuesArray: [\n * [['Stories.count'], 29661]\n * ]\n * }\n * ]\n * ```\n * @returns An array of pivoted rows.\n */\n public pivot(pivotConfig?: PivotConfig): PivotRow[] {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);\n const { pivotQuery: query } = this.loadResponse;\n\n const pivotImpl = (resultIndex = 0) => {\n let groupByXAxis = groupByToPairs<{ xValues: string[], row: Record<string, any> }, string>(({ xValues }) => this.axisValuesString(xValues));\n const measureValue = (row: Record<string, any>, measure: string) => row[measure] ?? normalizedPivotConfig.fillWithValue ?? 0;\n\n if (\n normalizedPivotConfig.fillMissingDates &&\n normalizedPivotConfig.x.length === 1 &&\n (equals(\n normalizedPivotConfig.x,\n (query.timeDimensions || [])\n .filter(td => Boolean(td.granularity))\n .map(td => ResultSet.timeDimensionMember(td))\n ))\n ) {\n const series = this.loadResponses.map(\n (loadResponse) => this.timeSeries(\n loadResponse.query.timeDimensions![0],\n resultIndex,\n loadResponse.annotation.timeDimensions\n )\n );\n\n if (series[0]) {\n groupByXAxis = (rows) => {\n const byXValues = groupBy(\n ({ xValues }) => xValues[0],\n rows\n );\n return series[resultIndex]?.map(d => [d, byXValues[d] || [{ xValues: [d], row: {} }]]) ?? [];\n };\n }\n }\n\n const xGrouped: [string, { xValues: string[], row: Record<string, any> }[]][] = pipe(\n map((row: Record<string, any>) => this.axisValues(normalizedPivotConfig.x, resultIndex)(row).map(xValues => ({ xValues, row }))),\n unnest,\n groupByXAxis\n )(this.timeDimensionBackwardCompatibleData(resultIndex));\n\n const yValuesMap: Record<string, any> = {};\n xGrouped.forEach(([, rows]) => {\n rows.forEach(({ row }) => {\n this.axisValues(normalizedPivotConfig.y, resultIndex)(row).forEach((values) => {\n if (Object.keys(row).length > 0) {\n yValuesMap[values.join()] = values;\n }\n });\n });\n });\n const allYValues = Object.values(yValuesMap);\n\n const measureOnX = Boolean((normalizedPivotConfig.x).find(d => d === 'measures'));\n\n return xGrouped.map(([, rows]) => {\n const { xValues } = rows[0];\n const yGrouped: Record<string, any> = {};\n\n rows.forEach(({ row }) => {\n const arr = this.axisValues(normalizedPivotConfig.y, resultIndex)(row).map(yValues => ({ yValues, row }));\n arr.forEach((res) => {\n yGrouped[this.axisValuesString(res.yValues)] = res;\n });\n });\n\n return {\n xValues,\n yValuesArray: unnest(allYValues.map(yValues => {\n const measure = measureOnX ?\n ResultSet.measureFromAxis(xValues) :\n ResultSet.measureFromAxis(yValues);\n\n return [[yValues, measureValue((yGrouped[this.axisValuesString(yValues)] ||\n ({ row: {} })).row, measure)]];\n }))\n };\n });\n };\n\n const pivots = this.loadResponses.length > 1\n ? this.loadResponses.map((_, index) => pivotImpl(index))\n : [];\n\n return pivots.length\n ? this.mergePivots(pivots, normalizedPivotConfig.joinDateRange || false)\n : pivotImpl();\n }\n\n private mergePivots(pivots: Pivot[][], joinDateRange: ((pivots: Pivot, joinDateRange: any) => PivotRow[]) | false): PivotRow[] {\n const minLengthPivot: Pivot[] = pivots.reduce<Pivot[] | null>(\n (memo, current) => (memo != null && current.length >= memo.length ? memo : current), null\n ) || [];\n\n return minLengthPivot.map((_: any, index: number) => {\n const xValues = joinDateRange\n ? [pivots.map((pivot) => pivot[index]?.xValues || []).join(', ')]\n : minLengthPivot[index].xValues;\n\n return {\n xValues,\n yValuesArray: unnest(pivots.map((pivot) => pivot[index].yValuesArray))\n };\n });\n }\n\n /**\n * Returns normalized query result data in the following format.\n *\n * You can find the examples of using the `pivotConfig` [here](#types-pivot-config)\n * ```js\n * // For the query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.chartPivot() will return\n * [\n * { \"x\":\"2015-01-01T00:00:00\", \"Stories.count\": 27120, \"xValues\": [\"2015-01-01T00:00:00\"] },\n * { \"x\":\"2015-02-01T00:00:00\", \"Stories.count\": 25861, \"xValues\": [\"2015-02-01T00:00:00\"] },\n * { \"x\":\"2015-03-01T00:00:00\", \"Stories.count\": 29661, \"xValues\": [\"2015-03-01T00:00:00\"] },\n * //...\n * ]\n *\n * ```\n * When using `chartPivot()` or `seriesNames()`, you can pass `aliasSeries` in the [pivotConfig](#types-pivot-config)\n * to give each series a unique prefix. This is useful for `blending queries` which use the same measure multiple times.\n *\n * ```js\n * // For the queries\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [\n * {\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month',\n * },\n * ],\n * },\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [\n * {\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month',\n * },\n * ],\n * filters: [\n * {\n * member: 'Stores.read',\n * operator: 'equals',\n * value: ['true'],\n * },\n * ],\n * },\n *\n * // ResultSet.chartPivot({ aliasSeries: ['one', 'two'] }) will return\n * [\n * {\n * x: '2015-01-01T00:00:00',\n * 'one,Stories.count': 27120,\n * 'two,Stories.count': 8933,\n * xValues: ['2015-01-01T00:00:00'],\n * },\n * {\n * x: '2015-02-01T00:00:00',\n * 'one,Stories.count': 25861,\n * 'two,Stories.count': 8344,\n * xValues: ['2015-02-01T00:00:00'],\n * },\n * {\n * x: '2015-03-01T00:00:00',\n * 'one,Stories.count': 29661,\n * 'two,Stories.count': 9023,\n * xValues: ['2015-03-01T00:00:00'],\n * },\n * //...\n * ]\n * ```\n */\n public chartPivot(pivotConfig?: PivotConfig): ChartPivotRow[] {\n const validate = (value: string) => {\n if (this.parseDateMeasures && LocalDateRegex.test(value)) {\n return new Date(value);\n } else if (!Number.isNaN(Number.parseFloat(value))) {\n return Number.parseFloat(value);\n }\n\n return value;\n };\n\n const duplicateMeasures = new Set<string>();\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n const allMeasures = flatten(this.loadResponses.map(({ query }) => query.measures ?? []));\n allMeasures.filter((e, i, a) => a.indexOf(e) !== i).forEach(m => duplicateMeasures.add(m));\n }\n\n return this.pivot(pivotConfig).map(({ xValues, yValuesArray }) => {\n const yValuesMap: Record<string, number | string | Date> = {};\n\n yValuesArray\n .forEach(([yValues, m]: [string[], string], i: number) => {\n yValuesMap[this.axisValuesString(aliasSeries(yValues, i, pivotConfig, duplicateMeasures), ',')] = m && validate(m);\n });\n\n return ({\n x: this.axisValuesString(xValues, ','),\n xValues,\n ...yValuesMap\n } as ChartPivotRow);\n });\n }\n\n /**\n * Returns normalized query result data prepared for visualization in the table format.\n *\n * You can find the examples of using the `pivotConfig` [here](#types-pivot-config)\n *\n * For example:\n * ```js\n * // For the query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.tablePivot() will return\n * [\n * { \"Stories.time\": \"2015-01-01T00:00:00\", \"Stories.count\": 27120 },\n * { \"Stories.time\": \"2015-02-01T00:00:00\", \"Stories.count\": 25861 },\n * { \"Stories.time\": \"2015-03-01T00:00:00\", \"Stories.count\": 29661 },\n * //...\n * ]\n * ```\n * @returns An array of pivoted rows\n */\n public tablePivot(pivotConfig?: PivotConfig): Array<{ [key: string]: string | number | boolean }> {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});\n const isMeasuresPresent = normalizedPivotConfig.x.concat(normalizedPivotConfig.y).includes('measures');\n\n return this.pivot(normalizedPivotConfig).map(({ xValues, yValuesArray }) => fromPairs(\n [\n ...(normalizedPivotConfig.x).map((key, index): [string, string | number] => [\n key,\n xValues[index]\n ]),\n ...(isMeasuresPresent\n ? yValuesArray.map(([yValues, measure]): [string, string | number] => [\n yValues.length ? yValues.join() : 'value',\n measure\n ])\n : [])\n ]\n ));\n }\n\n /**\n * Returns an array of column definitions for `tablePivot`.\n *\n * For example:\n * ```js\n * // For the query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.tableColumns() will return\n * [\n * {\n * key: 'Stories.time',\n * dataIndex: 'Stories.time',\n * title: 'Stories Time',\n * shortTitle: 'Time',\n * type: 'time',\n * format: undefined,\n * },\n * {\n * key: 'Stories.count',\n * dataIndex: 'Stories.count',\n * title: 'Stories Count',\n * shortTitle: 'Count',\n * type: 'count',\n * format: undefined,\n * },\n * //...\n * ]\n * ```\n *\n * In case we want to pivot the table axes\n * ```js\n * // Let's take this query as an example\n * {\n * measures: ['Orders.count'],\n * dimensions: ['Users.country', 'Users.gender']\n * }\n *\n * // and put the dimensions on `y` axis\n * resultSet.tableColumns({\n * x: [],\n * y: ['Users.country', 'Users.gender', 'measures']\n * })\n * ```\n *\n * then `tableColumns` will group the table head and return\n * ```js\n * {\n * key: 'Germany',\n * type: 'string',\n * title: 'Users Country Germany',\n * shortTitle: 'Germany',\n * meta: undefined,\n * format: undefined,\n * children: [\n * {\n * key: 'male',\n * type: 'string',\n * title: 'Users Gender male',\n * shortTitle: 'male',\n * meta: undefined,\n * format: undefined,\n * children: [\n * {\n * // ...\n * dataIndex: 'Germany.male.Orders.count',\n * shortTitle: 'Count',\n * },\n * ],\n * },\n * {\n * // ...\n * shortTitle: 'female',\n * children: [\n * {\n * // ...\n * dataIndex: 'Germany.female.Orders.count',\n * shortTitle: 'Count',\n * },\n * ],\n * },\n * ],\n * },\n * // ...\n * ```\n * @returns An array of columns\n */\n public tableColumns(pivotConfig?: PivotConfig): TableColumn[] {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});\n\n const annotations: QueryAnnotations = this.loadResponses\n .map((r) => r.annotation)\n .reduce<QueryAnnotations>((acc, annotation) => mergeDeepLeft(acc, annotation) as QueryAnnotations,\n {\n dimensions: {},\n measures: {},\n timeDimensions: {},\n segments: {},\n });\n\n const flatMeta = Object.values(annotations).reduce((a, b) => ({ ...a, ...b }), {});\n const schema: Record<string, any> = {};\n\n const extractFields = (key: string) => {\n const { title, shortTitle, type, format, meta } = flatMeta[key] || {};\n\n return {\n key,\n title,\n shortTitle,\n type,\n format,\n meta\n };\n };\n\n const pivot = this.pivot(normalizedPivotConfig);\n\n (pivot[0]?.yValuesArray || []).forEach(([yValues]) => {\n if (yValues.length > 0) {\n let currentItem = schema;\n\n yValues.forEach((value, index) => {\n currentItem[`_${value}`] = {\n key: value,\n memberId: normalizedPivotConfig.y[index] === 'measures'\n ? value\n : normalizedPivotConfig.y[index],\n children: currentItem[`_${value}`]?.children || {}\n };\n\n currentItem = currentItem[`_${value}`].children;\n });\n }\n });\n\n const toColumns = (item: Record<string, any> = {}, path: string[] = []): TableColumn[] => {\n if (Object.keys(item).length === 0) {\n return [];\n }\n\n return Object.values(item).map(({ key, ...currentItem }) => {\n const children = toColumns(currentItem.children, [\n ...path,\n key\n ]);\n\n const { title, shortTitle, ...fields } = extractFields(currentItem.memberId);\n\n const dimensionValue = key !== currentItem.memberId || title == null ? key : '';\n\n if (!children.length) {\n return {\n ...fields,\n key,\n dataIndex: [...path, key].join(),\n title: [title, dimensionValue].join(' ').trim(),\n shortTitle: dimensionValue || shortTitle,\n } as TableColumn;\n }\n\n return {\n ...fields,\n key,\n title: [title, dimensionValue].join(' ').trim(),\n shortTitle: dimensionValue || shortTitle,\n children,\n } as TableColumn;\n });\n };\n\n let otherColumns: TableColumn[] = [];\n\n if (!pivot.length && normalizedPivotConfig.y.includes('measures')) {\n otherColumns = (this.loadResponses[0].query.measures || []).map(\n (key) => ({ ...extractFields(key), dataIndex: key })\n );\n }\n\n // Synthetic column to display the measure value\n if (!normalizedPivotConfig.y.length && normalizedPivotConfig.x.includes('measures')) {\n otherColumns.push({\n key: 'value',\n dataIndex: 'value',\n title: 'Value',\n shortTitle: 'Value',\n type: 'string',\n });\n }\n\n return (normalizedPivotConfig.x).map((key) => {\n if (key === 'measures') {\n return {\n key: 'measures',\n dataIndex: 'measures',\n title: 'Measures',\n shortTitle: 'Measures',\n type: 'string',\n } as TableColumn;\n }\n\n return ({ ...extractFields(key), dataIndex: key });\n })\n .concat(toColumns(schema))\n .concat(otherColumns);\n }\n\n public totalRow(pivotConfig?: PivotConfig): ChartPivotRow {\n return this.chartPivot(pivotConfig)[0];\n }\n\n public categories(pivotConfig?: PivotConfig): ChartPivotRow[] {\n return this.chartPivot(pivotConfig);\n }\n\n /**\n * Returns an array of series objects, containing `key` and `title` parameters.\n * ```js\n * // For query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.seriesNames() will return\n * [\n * {\n * key: 'Stories.count',\n * title: 'Stories Count',\n * shortTitle: 'Count',\n * yValues: ['Stories.count'],\n * },\n * ]\n * ```\n * @returns An array of series names\n */\n public seriesNames(pivotConfig?: PivotConfig): SeriesNamesColumn[] {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);\n const measures = this.loadResponses\n .map(r => r.annotation.measures)\n .reduce((acc, m) => ({ ...acc, ...m }), {});\n\n const seriesNames = unnest(this.loadResponses.map((_, index) => pipe(\n map(this.axisValues(normalizedPivotConfig.y, index)),\n unnest,\n uniq\n )(\n this.timeDimensionBackwardCompatibleData(index)\n )));\n\n const duplicateMeasures = new Set<string>();\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n const allMeasures = flatten(this.loadResponses.map(({ query }) => query.measures ?? []));\n allMeasures.filter((e, i, a) => a.indexOf(e) !== i).forEach(m => duplicateMeasures.add(m));\n }\n\n return seriesNames.map((axisValues, i) => {\n const aliasedAxis = aliasSeries(axisValues, i, normalizedPivotConfig, duplicateMeasures);\n return {\n title: this.axisValuesString(\n normalizedPivotConfig.y.find(d => d === 'measures') ?\n dropLast(1, aliasedAxis).concat(\n measures[\n ResultSet.measureFromAxis(axisValues)\n ].title\n ) :\n aliasedAxis, ', '\n ),\n shortTitle: this.axisValuesString(\n normalizedPivotConfig.y.find(d => d === 'measures') ?\n dropLast(1, aliasedAxis).concat(\n measures[\n ResultSet.measureFromAxis(axisValues)\n ].shortTitle\n ) :\n aliasedAxis, ', '\n ),\n key: this.axisValuesString(aliasedAxis, ','),\n yValues: axisValues\n };\n });\n }\n\n public query(): Query {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].query;\n }\n\n public pivotQuery(): PivotQuery {\n return this.loadResponse.pivotQuery || null;\n }\n\n /**\n * @return the total number of rows if the `total` option was set, when sending the query\n */\n public totalRows(): number | null | undefined {\n return this.loadResponses[0].total;\n }\n\n public rawData(): T[] {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].data;\n }\n\n public annotation(): QueryAnnotations {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].annotation;\n }\n\n private timeDimensionBackwardCompatibleData(resultIndex: number) {\n if (resultIndex === undefined) {\n throw new Error('resultIndex is required');\n }\n\n if (!this.backwardCompatibleData[resultIndex]) {\n const { data, query } = this.loadResponses[resultIndex];\n const timeDimensions = (query.timeDimensions || []).filter(td => Boolean(td.granularity));\n\n this.backwardCompatibleData[resultIndex] = data.map(row => (\n {\n ...row,\n ...(\n fromPairs(Object.keys(row)\n .filter(\n field => {\n const foundTd = timeDimensions.find(d => d.dimension === field);\n return foundTd && !row[ResultSet.timeDimensionMember(foundTd)];\n }\n ).map(field => (\n [ResultSet.timeDimensionMember(timeDimensions.find(d => d.dimension === field)!), row[field]]\n )))\n )\n }\n ));\n }\n\n return this.backwardCompatibleData[resultIndex];\n }\n\n /**\n * Can be used when you need access to the methods that can't be used with some query types (eg `compareDateRangeQuery` or `blendingQuery`)\n * ```js\n * resultSet.decompose().forEach((currentResultSet) => {\n * console.log(currentResultSet.rawData());\n * });\n * ```\n */\n public decompose(): ResultSet<any>[] {\n return this.loadResponses.map((result) => new ResultSet({\n queryType: QUERY_TYPE.REGULAR_QUERY,\n pivotQuery: {\n ...result.query,\n queryType: QUERY_TYPE.REGULAR_QUERY,\n },\n results: [result]\n }, this.options));\n }\n\n /**\n * Can be used to stash the `ResultSet` in a storage and restored later with [deserialize](#result-set-deserialize)\n */\n public serialize(): SerializedResult {\n return {\n loadResponse: clone(this.loadResponse)\n };\n }\n}\n","export type SqlQueryTuple = [string, any[], any?];\n\nexport type SqlData = {\n aliasNameToMember: Record<string, string>;\n cacheKeyQueries: SqlQueryTuple[];\n dataSource: string;\n external: boolean;\n sql: SqlQueryTuple;\n preAggregations: any[];\n rollupMatchResults: any[];\n};\n\nexport type SqlQueryWrapper = { sql: SqlData };\n\nexport default class SqlQuery {\n private readonly sqlQuery: SqlQueryWrapper;\n\n public constructor(sqlQuery: SqlQueryWrapper) {\n this.sqlQuery = sqlQuery;\n }\n\n public rawQuery(): SqlData {\n return this.sqlQuery.sql;\n }\n\n public sql(): string {\n return this.rawQuery().sql[0];\n }\n}\n","import { unnest, fromPairs } from 'ramda';\nimport {\n Cube,\n CubesMap,\n MemberType,\n MetaResponse,\n TCubeMeasure,\n TCubeDimension,\n TCubeMember,\n TCubeMemberByType,\n Query,\n FilterOperator,\n TCubeSegment,\n NotFoundMember,\n} from './types';\nimport { DeeplyReadonly } from './index';\n\nexport interface CubeMemberWrapper<T> {\n cubeName: string;\n cubeTitle: string;\n type: 'view' | 'cube';\n public: boolean;\n members: T[];\n}\n\nexport type AggregatedMembers = {\n measures: CubeMemberWrapper<TCubeMeasure>[];\n dimensions: CubeMemberWrapper<TCubeDimension>[];\n segments: CubeMemberWrapper<TCubeSegment>[];\n timeDimensions: CubeMemberWrapper<TCubeDimension>[];\n};\n\nconst memberMap = (memberArray: any[]) => fromPairs(\n memberArray.map((m) => [m.name, m])\n);\n\nconst operators = {\n string: [\n { name: 'contains', title: 'contains' },\n { name: 'notContains', title: 'does not contain' },\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'set', title: 'is set' },\n { name: 'notSet', title: 'is not set' },\n { name: 'startsWith', title: 'starts with' },\n { name: 'notStartsWith', title: 'does not start with' },\n { name: 'endsWith', title: 'ends with' },\n { name: 'notEndsWith', title: 'does not end with' },\n ],\n number: [\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'set', title: 'is set' },\n { name: 'notSet', title: 'is not set' },\n { name: 'gt', title: '>' },\n { name: 'gte', title: '>=' },\n { name: 'lt', title: '<' },\n { name: 'lte', title: '<=' },\n ],\n time: [\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'inDateRange', title: 'in date range' },\n { name: 'notInDateRange', title: 'not in date range' },\n { name: 'afterDate', title: 'after date' },\n { name: 'afterOrOnDate', title: 'after or on date' },\n { name: 'beforeDate', title: 'before date' },\n { name: 'beforeOrOnDate', title: 'before or on date' },\n ],\n};\n\n/**\n * Contains information about available cubes and it's members.\n */\nexport default class Meta {\n /**\n * Raw meta response\n */\n public readonly meta: MetaResponse;\n\n /**\n * An array of all available cubes with their members\n */\n public readonly cubes: Cube[];\n\n /**\n * A map of all cubes where the key is a cube name\n */\n public readonly cubesMap: CubesMap;\n\n public constructor(metaResponse: MetaResponse) {\n this.meta = metaResponse;\n const { cubes } = this.meta;\n this.cubes = cubes;\n this.cubesMap = fromPairs(\n cubes.map((c) => [\n c.name,\n {\n measures: memberMap(c.measures),\n dimensions: memberMap(c.dimensions),\n segments: memberMap(c.segments),\n },\n ])\n );\n }\n\n /**\n * Get all members of a specific type for a given query.\n * If empty query is provided no filtering is done based on query context and all available members are retrieved.\n * @param _query - context query to provide filtering of members available to add to this query\n * @param memberType\n */\n public membersForQuery(_query: DeeplyReadonly<Query> | null, memberType: MemberType): (TCubeMeasure | TCubeDimension | TCubeMember | TCubeSegment)[] {\n return unnest(this.cubes.map((c) => c[memberType]))\n .sort((a, b) => (a.title > b.title ? 1 : -1));\n }\n\n public membersGroupedByCube() {\n const memberKeys = ['measures', 'dimensions', 'segments', 'timeDimensions'];\n\n return this.cubes.reduce<AggregatedMembers>(\n (memo, cube) => {\n memberKeys.forEach((key) => {\n let members: TCubeMeasure[] | TCubeDimension[] | TCubeSegment[] = [];\n\n // eslint-disable-next-line default-case\n switch (key) {\n case 'measures':\n members = cube.measures || [];\n break;\n case 'dimensions':\n members = cube.dimensions || [];\n break;\n case 'segments':\n members = cube.segments || [];\n break;\n case 'timeDimensions':\n members = cube.dimensions.filter((m) => m.type === 'time') || [];\n break;\n }\n\n // TODO: Convince TS this is working\n // @ts-ignore\n memo[key].push({\n cubeName: cube.name,\n cubeTitle: cube.title,\n type: cube.type,\n public: cube.public,\n members,\n });\n });\n\n return memo;\n },\n {\n measures: [],\n dimensions: [],\n segments: [],\n timeDimensions: [],\n } as AggregatedMembers\n );\n }\n\n /**\n * Get meta information for a cube member\n * meta information contains:\n * ```javascript\n * {\n * name,\n * title,\n * shortTitle,\n * type,\n * description,\n * format\n * }\n * ```\n * @param memberName - Fully qualified member name in a form `Cube.memberName`\n * @param memberType\n * @return An object containing meta information about member\n */\n public resolveMember<T extends MemberType>(\n memberName: string,\n memberType: T | T[]\n ): NotFoundMember | TCubeMemberByType<T> {\n const [cube] = memberName.split('.');\n\n if (!this.cubesMap[cube]) {\n return { title: memberName, error: `Cube not found ${cube} for path '${memberName}'` };\n }\n\n const memberTypes = Array.isArray(memberType) ? memberType : [memberType];\n const member = memberTypes\n .map((type) => this.cubesMap[cube][type] && this.cubesMap[cube][type][memberName])\n .find((m) => m);\n\n if (!member) {\n return {\n title: memberName,\n error: `Path not found '${memberName}'`,\n };\n }\n\n return member as TCubeMemberByType<T>;\n }\n\n public defaultTimeDimensionNameFor(memberName: string): string | null | undefined {\n const [cube] = memberName.split('.');\n if (!this.cubesMap[cube]) {\n return null;\n }\n return Object.keys(this.cubesMap[cube].dimensions || {}).find(\n (d) => this.cubesMap[cube].dimensions[d].type === 'time'\n );\n }\n\n public filterOperatorsForMember(memberName: string, memberType: MemberType | MemberType[]): FilterOperator[] {\n const member = this.resolveMember(memberName, memberType);\n\n if ('error' in member || !('type' in member) || member.type === 'boolean') {\n return operators.string;\n }\n\n return operators[member.type] || operators.string;\n }\n}\n","import { ProgressResponse } from './types';\n\nexport default class ProgressResult {\n private progressResponse: ProgressResponse;\n\n public constructor(progressResponse: ProgressResponse) {\n this.progressResponse = progressResponse;\n }\n\n public stage(): string {\n return this.progressResponse.stage;\n }\n\n public timeElapsed(): number {\n return this.progressResponse.timeElapsed;\n }\n}\n","export async function* responseChunks(res: Response): AsyncIterable<Uint8Array> {\n // eslint-disable-next-line prefer-destructuring\n const body: any = res.body;\n\n if (body && typeof body.getReader === 'function') {\n const reader = body.getReader(); // Browser / Node native fetch\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n if (value) yield value; // Uint8Array\n }\n } finally {\n reader.releaseLock?.();\n }\n return;\n }\n\n // Node.js Readable (node-fetch v2 via cross-fetch)\n if (body && Symbol.asyncIterator in body) {\n for await (const chunk of body as AsyncIterable<Buffer | Uint8Array | string>) {\n if (typeof chunk === 'string') {\n // Convert string chunks to bytes (rare, but safe)\n yield new TextEncoder().encode(chunk);\n } else {\n yield new Uint8Array(chunk);\n }\n }\n return;\n }\n\n throw new Error('Unsupported response body type for streaming');\n}\n","import fetch from 'cross-fetch';\nimport 'url-search-params-polyfill';\nimport { responseChunks } from './streaming';\n\nexport interface ErrorResponse {\n error: string;\n}\n\nexport type TransportOptions = {\n /**\n * [jwt auth token](security)\n */\n authorization?: string;\n /**\n * path to `/cubejs-api/v1`\n */\n apiUrl: string;\n /**\n * custom headers\n */\n headers: Record<string, string>;\n credentials?: 'omit' | 'same-origin' | 'include';\n method?: 'GET' | 'PUT' | 'POST' | 'PATCH';\n /**\n * Fetch timeout in milliseconds. Would be passed as AbortSignal.timeout()\n */\n fetchTimeout?: number;\n /**\n * AbortSignal to cancel requests\n */\n signal?: AbortSignal;\n};\n\nexport interface ITransportResponse<R> {\n subscribe: <CBResult>(\n cb: (\n result: R | ErrorResponse,\n resubscribe: () => Promise<CBResult>\n ) => CBResult\n ) => Promise<CBResult>;\n // Optional, supported in WebSocketTransport\n unsubscribe?: () => Promise<void>;\n}\n\nexport interface ITransportStreamResponse {\n stream(): Promise<AsyncIterable<Uint8Array>>;\n unsubscribe?: () => Promise<void>;\n}\n\nexport interface ITransportStreamParams<T extends Record<string, unknown> = Record<string, unknown>> {\n method?: 'GET' | 'POST' | 'PUT' | 'PATCH';\n fetchTimeout?: number;\n baseRequestId?: string;\n signal?: AbortSignal;\n params?: T;\n}\n\nexport interface ITransport<R> {\n request(\n method: string,\n params: Record<string, unknown>\n ): ITransportResponse<R>;\n requestStream?<T extends Record<string, unknown> = Record<string, unknown>>(\n method: string,\n params: ITransportStreamParams<T>\n ): ITransportStreamResponse;\n authorization: TransportOptions['authorization'];\n}\n\n/**\n * Default transport implementation.\n */\nexport class HttpTransport implements ITransport<Response> {\n public authorization: TransportOptions['authorization'];\n\n protected apiUrl: TransportOptions['apiUrl'];\n\n protected method: TransportOptions['method'];\n\n protected headers: TransportOptions['headers'];\n\n protected credentials: TransportOptions['credentials'];\n\n protected fetchTimeout: number | undefined;\n\n private readonly signal: AbortSignal | undefined;\n\n public constructor({\n authorization,\n apiUrl,\n method,\n headers = {},\n credentials,\n fetchTimeout,\n signal,\n }: Omit<TransportOptions, 'headers'> & {\n headers?: TransportOptions['headers'];\n }) {\n this.authorization = authorization;\n this.apiUrl = apiUrl;\n this.method = method;\n this.headers = headers;\n this.credentials = credentials;\n this.fetchTimeout = fetchTimeout;\n this.signal = signal;\n }\n\n public request(\n apiMethod: string,\n { method, fetchTimeout, baseRequestId, signal, ...params }: any\n ): ITransportResponse<Response> {\n let spanCounter = 1;\n const searchParams = new URLSearchParams(\n params &&\n Object.keys(params)\n .map((k) => ({\n [k]:\n typeof params[k] === 'object'\n ? JSON.stringify(params[k])\n : params[k],\n }))\n .reduce((a, b) => ({ ...a, ...b }), {})\n );\n\n let url = `${this.apiUrl}/${apiMethod}${\n searchParams.toString().length ? `?${searchParams}` : ''\n }`;\n\n const requestMethod =\n method ?? this.method ?? (url.length < 2000 ? 'GET' : 'POST');\n if (requestMethod === 'POST') {\n url = `${this.apiUrl}/${apiMethod}`;\n this.headers['Content-Type'] = 'application/json';\n }\n\n const effectiveFetchTimeout = fetchTimeout ?? this.fetchTimeout;\n const actualSignal =\n signal ||\n this.signal ||\n (effectiveFetchTimeout\n ? AbortSignal.timeout(effectiveFetchTimeout)\n : undefined);\n\n // Currently, all methods make GET requests. If a method makes a request with a body payload,\n // remember to add {'Content-Type': 'application/json'} to the header.\n const runRequest = () => fetch(url, {\n method: requestMethod,\n headers: {\n Authorization: this.authorization,\n 'x-request-id':\n baseRequestId && `${baseRequestId}-span-${spanCounter++}`,\n ...this.headers,\n } as HeadersInit,\n credentials: this.credentials,\n body: requestMethod === 'POST' ? JSON.stringify(params) : null,\n signal: actualSignal,\n });\n\n return {\n /* eslint no-unsafe-finally: off */\n async subscribe(callback) {\n try {\n const result = await runRequest();\n return callback(result, () => this.subscribe(callback));\n } catch (e: any) {\n let errorMessage = 'network Error';\n\n if (e.name === 'AbortError') {\n if (\n actualSignal?.reason === 'TimeoutError' ||\n actualSignal?.reason?.name === 'TimeoutError'\n ) {\n errorMessage = 'timeout';\n } else {\n errorMessage = 'aborted';\n }\n }\n\n const result: ErrorResponse = { error: errorMessage };\n return callback(result, () => this.subscribe(callback));\n }\n },\n };\n }\n\n public requestStream<T extends Record<string, unknown> = Record<string, unknown>>(\n apiMethod: string,\n { method, fetchTimeout, baseRequestId, signal, params }: ITransportStreamParams<T>\n ): ITransportStreamResponse {\n const processedParams: Record<string, string> = {};\n\n // Handle the generic params object\n if (params) {\n Object.keys(params).forEach((k) => {\n const value = params[k];\n if (value !== undefined) {\n processedParams[k] = typeof value === 'object' ? JSON.stringify(value) : String(value);\n }\n });\n }\n\n const searchParams = new URLSearchParams(processedParams);\n\n let url = `${this.apiUrl}/${apiMethod}${\n searchParams.toString().length ? `?${searchParams}` : ''\n }`;\n\n const requestMethod = method ?? this.method ?? 'POST';\n if (requestMethod === 'POST') {\n url = `${this.apiUrl}/${apiMethod}`;\n this.headers['Content-Type'] = 'application/json';\n }\n\n const effectiveFetchTimeout = fetchTimeout ?? this.fetchTimeout;\n\n let controller: AbortController | undefined;\n let actualSignal: AbortSignal | undefined = signal || this.signal;\n\n if (!actualSignal && effectiveFetchTimeout) {\n controller = new AbortController();\n actualSignal = controller.signal;\n setTimeout(() => controller?.abort(), effectiveFetchTimeout);\n }\n\n return {\n stream: async () => {\n const response = await fetch(url, {\n method: requestMethod,\n headers: {\n Authorization: this.authorization,\n 'x-request-id': baseRequestId || 'stream-request',\n ...this.headers,\n } as HeadersInit,\n credentials: this.credentials,\n body: requestMethod === 'POST' ? JSON.stringify(params || {}) : null,\n signal: actualSignal,\n });\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n\n if (!response.body) {\n throw new Error('No response body available for streaming');\n }\n\n return responseChunks(response);\n },\n unsubscribe: async () => {\n if (controller) {\n controller.abort();\n }\n },\n };\n }\n}\n\nexport default HttpTransport;\n","export default class RequestError extends Error {\n public response: any;\n\n public status: number;\n\n public constructor(message: string, response: any, status: number) {\n super(message);\n this.response = response;\n this.status = status;\n }\n}\n","import { v4 as uuidv4 } from 'uuid';\nimport ResultSet from './ResultSet';\nimport SqlQuery from './SqlQuery';\nimport Meta from './Meta';\nimport ProgressResult from './ProgressResult';\nimport HttpTransport, { ErrorResponse, ITransport, TransportOptions } from './HttpTransport';\nimport RequestError from './RequestError';\nimport {\n CacheMode,\n ExtractTimeMembers,\n LoadResponse,\n MetaResponse,\n PivotQuery,\n ProgressResponse,\n Query,\n QueryOrder,\n QueryType,\n TransformedQuery\n} from './types';\n\nexport type LoadMethodCallback<T> = (error: Error | null, resultSet: T) => void;\n\nexport type LoadMethodOptions = {\n /**\n * Key to store the current request's MUTEX inside the `mutexObj`. MUTEX object is used to reject orphaned queries results when new queries are sent. For example: if two queries are sent with the same `mutexKey` only the last one will return results.\n */\n mutexKey?: string;\n /**\n * Object to store MUTEX\n */\n mutexObj?: { [key: string]: any };\n /**\n * Pass `true` to use continuous fetch behavior.\n */\n subscribe?: boolean;\n /**\n * A Cube API instance. If not provided will be taken from `CubeProvider`\n */\n // eslint-disable-next-line no-use-before-define\n cubeApi?: CubeApi;\n /**\n * If enabled, all members of the 'number' type will be automatically converted to numerical values on the client side\n */\n castNumerics?: boolean;\n /**\n * Function that receives `ProgressResult` on each `Continue wait` message.\n */\n progressCallback?(result: ProgressResult): void;\n /**\n * 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 lastRefreshTime?: string;\n};\n\nexport type CubeSqlStreamChunk = {\n type: 'schema';\n schema: CubeSqlSchemaColumn[];\n lastRefreshTime?: string;\n} | {\n type: 'data';\n data: (string | number | boolean | null)[];\n} | {\n type: 'error';\n error: string;\n};\n\ninterface BodyResponse {\n error?: string;\n [key: string]: any;\n}\n\nlet mutexCounter = 0;\n\nconst MUTEX_ERROR = 'Mutex has been changed';\n\nfunction mutexPromise(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 const parsedSchema = JSON.parse(schema);\n return {\n schema: parsedSchema.schema,\n data: data\n .filter((d: string) => d.trim().length)\n .map((d: string) => JSON.parse(d).data)\n .reduce((a: any, b: any) => a.concat(b), []),\n ...(parsedSchema.lastRefreshTime ? { lastRefreshTime: parsedSchema.lastRefreshTime } : {}),\n };\n } catch (err) {\n throw new Error(response.error);\n }\n },\n options,\n callback\n );\n }\n\n /**\n * Execute a Cube SQL query against Cube SQL interface and return streaming results as an async generator.\n * The server returns JSONL (JSON Lines) format with schema first, then data rows.\n */\n public async* cubeSqlStream(sqlQuery: string, options?: CubeSqlOptions): AsyncGenerator<CubeSqlStreamChunk> {\n if (!this.transport.requestStream) {\n throw new Error('Transport does not support streaming');\n }\n\n const streamResponse = this.transport.requestStream('cubesql', {\n method: 'POST',\n signal: options?.signal,\n fetchTimeout: options?.timeout,\n baseRequestId: uuidv4(),\n params: {\n query: sqlQuery,\n cache: options?.cache\n }\n });\n\n const decoder = new TextDecoder();\n let buffer = '';\n\n try {\n const stream = await streamResponse.stream();\n\n for await (const chunk of stream) {\n buffer += decoder.decode(chunk, { stream: true });\n\n const lines = buffer.split('\\n');\n buffer = lines.pop() || '';\n\n for (const line of lines) {\n if (line.trim()) {\n try {\n const parsed = JSON.parse(line);\n\n if (parsed.schema) {\n yield {\n type: 'schema' as const,\n schema: parsed.schema,\n ...(parsed.lastRefreshTime ? { lastRefreshTime: parsed.lastRefreshTime } : {}),\n };\n } else if (parsed.data) {\n yield {\n type: 'data' as const,\n data: parsed.data\n };\n } else if (parsed.error) {\n yield {\n type: 'error' as const,\n error: parsed.error\n };\n }\n } catch (parseError) {\n yield {\n type: 'error' as const,\n error: `Failed to parse JSON line: ${line}`\n };\n }\n }\n }\n }\n\n if (buffer.trim()) {\n try {\n const parsed = JSON.parse(buffer);\n\n if (parsed.schema) {\n yield {\n type: 'schema' as const,\n schema: parsed.schema,\n ...(parsed.lastRefreshTime ? { lastRefreshTime: parsed.lastRefreshTime } : {}),\n };\n } else if (parsed.data) {\n yield {\n type: 'data' as const,\n data: parsed.data\n };\n } else if (parsed.error) {\n yield {\n type: 'error' as const,\n error: parsed.error\n };\n }\n } catch (parseError) {\n yield {\n type: 'error' as const,\n error: `Failed to parse remaining JSON: ${buffer}`\n };\n }\n }\n } catch (error: any) {\n if (error.name === 'AbortError') {\n throw new Error('aborted');\n }\n throw error;\n } finally {\n if (streamResponse.unsubscribe) {\n await streamResponse.unsubscribe();\n }\n }\n }\n}\n\nexport default (apiToken: string | (() => Promise<string>), options: CubeApiOptions) => new CubeApi(apiToken, options);\n\nexport { CubeApi };\nexport { default as Meta } from './Meta';\nexport { default as SqlQuery } from './SqlQuery';\nexport { default as RequestError } from './RequestError';\nexport { default as ProgressResult } from './ProgressResult';\nexport { default as ResultSet } from './ResultSet';\nexport * from './HttpTransport';\nexport * from './utils';\nexport * from './time';\nexport * from './types';\n","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","cubeInternalLocale","customLocale","_objectSpread","en","name","weekStart","Ls","GRANULARITIES","undefined","title","DEFAULT_GRANULARITY","internalDayjs","apply","arguments","locale","TIME_SERIES","day","range","by","map","d","format","month","snapTo","year","hour","minute","second","week","startOf","quarter","isPredefinedGranularity","granularity","DateRegex","LocalDateRegex","parseSqlInterval","intervalStr","interval","parts","split","i","length","value","parseInt","unit","singularUnit","endsWith","slice","addInterval","date","res","clone","Object","entries","forEach","_ref","_ref2","_slicedToArray","key","add","subtractInterval","_ref3","_ref4","subtract","alignToOrigin","startDate","origin","alignedDate","intervalOp","isIntervalNegative","offsetDate","isBefore","isAfter","isSame","dayRange","from","to","annotations","results","start","end","push","_customGranularity","customGranularity","_i","_Object$keys","keys","concat","intervalParsed","intervalStart","offset","intervalEnd","endOf","timeSeriesFromCustomInterval","alignedStart","dates","diffTimeUnitForInterval","test","granularityOrder","minGranularityForIntervals","i1","i2","g1","g2","g1pos","indexOf","g2pos","granularityFor","dateStr","dayjsDate","hours","minutes","seconds","milliseconds","millisecond","weekDay","isoWeekday","removeEmptyQueryFields","_query","query","fromPairs","toPairs","flatMap","includes","Array","isArray","validateQuery","filters","filter","f","timeDimensions","td","dateRange","areQueriesEqual","query1","query2","equals","order","defaultOrder","find","_defineProperty","dimension","measures","dimensions","defaultHeuristics","newState","oldQuery","options","_clone","props","_objectWithoutProperties","_excluded","meta","sessionGranularity","state","shouldApplyHeuristicOrder","pivotConfig","newQuery","_ref6","_ref7","defaultTimeDimension","defaultTimeDimensionNameFor","chartType","newChartType","_ref8","_ref9","_ref0","_ref1","isQueryPresent","every","q","_q$measures","_q$dimensions","_q$timeDimensions","movePivotItem","sourceIndex","destinationIndex","sourceAxis","destinationAxis","nextPivotConfig","x","_toConsumableArray","y","id","lastIndex","splice","moveItemInArray","list","result","_result$splice","_result$splice2","removed","flattenFilters","reduce","memo","or","and","getQueryMembers","members","Set","member","getOrderMembersFromOrder","orderMembers","ids","indexedOrderMembers","indexBy","prop","nextOrderMembers","_ref10","_ref11","memberId","currentOrder","has","aliasSeries","values","index","_pivotConfig$aliasSer","duplicateMeasures","nonNullValues","groupByToPairs","groupByToPairsImpl","keyFn","acc","Map","data","row","set","get","unnest","arr","subArr","element","QUERY_TYPE","REGULAR_QUERY","COMPARE_DATE_RANGE_QUERY","BLENDING_QUERY","ResultSet","loadResponse","_classCallCheck","queryType","loadResponses","pivotQuery","Error","parseDateMeasures","backwardCompatibleData","_createClass","drillDown","drillDownLocator","_drillDownLocator$xVa","_drillDownLocator$yVa","_measures$measureName","_measures$measureName2","xValues","yValues","normalizedPivotConfig","normalizePivotConfig","currentIndex","_this$query","_this$query$filters","parentFilters","_this$query$segments","segments","_this$loadResponses$","annotation","timeDimensionsAnnotation","measureName","_Object$keys2","drillMembers","operator","_ref5","_member$split","_member$split2","cubeName","_query$timeDimensions","originalTimeDimension","_originalTimeDimensio","originalStart","originalEnd","join","dt","toString","drillMembersGrouped","timezone","series","_this","seriesNames","shortTitle","chartPivot","obj","axisValues","axis","resultIndex","measure","val","axisValuesString","delimiter","formatValue","v","getNormalizedPivotConfig","timeSeries","timeDimension","timeDimensionMember","rawRows","timeDimensionBackwardCompatibleData","Boolean","minBy","toDate","maxBy","padToDay","match","_dateRange","_dateRange2","pivot","_this2","pivotImpl","groupByXAxis","measureValue","_row$measure","fillWithValue","fillMissingDates","rows","_series$resultIndex$m","_series$resultIndex","byXValues","groupBy","xGrouped","pipe","yValuesMap","_ref12","_ref13","_ref14","allYValues","measureOnX","_ref15","_ref16","yGrouped","_ref17","yValuesArray","measureFromAxis","pivots","_","mergePivots","joinDateRange","minLengthPivot","current","_pivot$index","_this3","validate","Date","Number","isNaN","parseFloat","allMeasures","flatten","_ref18","_query$measures","e","a","m","_ref19","_ref20","_ref21","tablePivot","isMeasuresPresent","_ref22","_ref23","_ref24","tableColumns","_pivot$","r","mergeDeepLeft","flatMeta","b","schema","extractFields","_ref25","type","_ref26","_ref27","currentItem","_currentItem","children","toColumns","item","path","_ref28","_excluded2","_extractFields","fields","_excluded3","dimensionValue","dataIndex","trim","otherColumns","totalRow","categories","_this4","uniq","_ref29","_query$measures2","aliasedAxis","dropLast","totalRows","total","rawData","_this$loadResponses$r","field","foundTd","decompose","_this5","serialize","deserialize","defaultPivotConfig","_ref30","_ref30$measures","_ref30$dimensions","substituteTimeDimensionMembers","subDim","allIncludedDimensions","allDimensions","dimensionFilter","unshift","SqlQuery","sqlQuery","rawQuery","sql","memberMap","memberArray","operators","string","number","time","Meta","metaResponse","cubes","cubesMap","c","membersForQuery","memberType","sort","membersGroupedByCube","memberKeys","cube","cubeTitle","resolveMember","memberName","_memberName$split","_memberName$split2","error","memberTypes","_memberName$split3","_memberName$split4","filterOperatorsForMember","ProgressResult","progressResponse","stage","timeElapsed","responseChunks","_x","_responseChunks","_wrapAsyncGenerator","_regeneratorRuntime","mark","_callee","body","reader","_yield$_awaitAsyncGen","done","_reader$releaseLock","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_step","chunk","_t","wrap","_context","prev","next","getReader","_awaitAsyncGenerator","read","sent","abrupt","releaseLock","call","finish","Symbol","asyncIterator","_asyncIterator","TextEncoder","encode","Uint8Array","stop","HttpTransport","authorization","apiUrl","method","_ref$headers","headers","credentials","fetchTimeout","signal","request","apiMethod","baseRequestId","params","spanCounter","searchParams","URLSearchParams","k","_typeof","JSON","stringify","url","requestMethod","effectiveFetchTimeout","actualSignal","AbortSignal","timeout","runRequest","fetch","Authorization","subscribe","callback","_asyncToGenerator","errorMessage","_actualSignal$reason","_result","reason","requestStream","processedParams","String","controller","AbortController","setTimeout","_controller","abort","stream","_stream","_callee2","response","_context2","ok","status","statusText","unsubscribe","_unsubscribe","_callee3","_context3","RequestError","_Error","message","_callSuper","_inherits","_wrapNativeSuper","mutexCounter","MUTEX_ERROR","mutexPromise","promise","then","CubeApi","apiToken","transport","pollInterval","castNumerics","networkErrorRetries","updateAuthorizationPromise","uuidv4","loadMethod","toResult","mutexValue","mutexKey","mutexObj","requestPromise","updateTransportAuthorization","skipAuthorizationUpdate","unsubscribed","checkMutex","requestInstance","networkRetries","loadImpl","_callee4","_options2","_response$error","_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","parsedSchema","lastRefreshTime","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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GAAA0E,MAAA;YAAA,OAAiC,CACpEjH,OAAO,CAACpN,MAAM,GAAGoN,OAAO,CAACyB,IAAI,EAAE,GAAG,OAAO,EACzCc,OAAO,CACR;YAAC,GACA,EAAE,EAEV,CAAC;UAAC;;;;EAIN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;MA7FE1O,GAAA;MAAAhB,KAAA,EA8FA,SAAOqU,YAAYA,CAACnN,WAAyB,EAAiB;QAAA,IAAAoN,OAAA;QAC5D,IAAMlH,qBAAqB,GAAG,IAAI,CAACC,oBAAoB,CAACnG,WAAW,IAAI,EAAE,CAAC;QAE1E,IAAM/E,WAA6B,GAAG,IAAI,CAACmK,aAAa,CACrD7N,GAAG,CAAC,UAAC8V,CAAC;UAAA,OAAKA,CAAC,CAAC1G,UAAU;UAAC,CACxBtE,MAAM,CAAmB,UAAC6B,GAAG,EAAEyC,UAAU;UAAA,OAAK2G,mBAAa,CAACpJ,GAAG,EAAEyC,UAAU,CAAC;SAAoB,EAC/F;UACExH,UAAU,EAAE,EAAE;UACdD,QAAQ,EAAE,EAAE;UACZZ,cAAc,EAAE,EAAE;UAClBmI,QAAQ,EAAE;SACX,CAAC;QAEN,IAAM8G,QAAQ,GAAG/T,MAAM,CAACkK,MAAM,CAACzI,WAAW,CAAC,CAACoH,MAAM,CAAC,UAACoK,CAAC,EAAEe,CAAC;UAAA,OAAAlX,eAAA,CAAAA,eAAA,KAAWmW,CAAC,GAAKe,CAAC;SAAG,EAAE,EAAE,CAAC;QAClF,IAAMC,MAA2B,GAAG,EAAE;QAEtC,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAI5T,GAAW,EAAK;UACrC,IAAA6T,MAAA,GAAkDJ,QAAQ,CAACzT,GAAG,CAAC,IAAI,EAAE;YAA7DjD,KAAK,GAAA8W,MAAA,CAAL9W,KAAK;YAAEqR,UAAU,GAAAyF,MAAA,CAAVzF,UAAU;YAAE0F,IAAI,GAAAD,MAAA,CAAJC,IAAI;YAAEnW,MAAM,GAAAkW,MAAA,CAANlW,MAAM;YAAEmI,IAAI,GAAA+N,MAAA,CAAJ/N,IAAI;UAE7C,OAAO;YACL9F,GAAG,EAAHA,GAAG;YACHjD,KAAK,EAALA,KAAK;YACLqR,UAAU,EAAVA,UAAU;YACV0F,IAAI,EAAJA,IAAI;YACJnW,MAAM,EAANA,MAAM;YACNmI,IAAI,EAAJA;WACD;SACF;QAED,IAAMgK,KAAK,GAAG,IAAI,CAACA,KAAK,CAAC1D,qBAAqB,CAAC;QAE/C,CAAC,EAAAkH,OAAA,GAAAxD,KAAK,CAAC,CAAC,CAAC,cAAAwD,OAAA,uBAARA,OAAA,CAAU/B,YAAY,KAAI,EAAE,EAAE3R,OAAO,CAAC,UAAAmU,MAAA,EAAe;UAAA,IAAAC,MAAA,GAAAjU,kCAAA,CAAAgU,MAAA;YAAb5H,OAAO,GAAA6H,MAAA;UAC9C,IAAI7H,OAAO,CAACpN,MAAM,GAAG,CAAC,EAAE;YACtB,IAAIkV,WAAW,GAAGN,MAAM;YAExBxH,OAAO,CAACvM,OAAO,CAAC,UAACZ,KAAK,EAAE6K,KAAK,EAAK;cAAA,IAAAqK,YAAA;cAChCD,WAAW,KAAApS,MAAA,CAAK7C,KAAK,EAAG,GAAG;gBACzBgB,GAAG,EAAEhB,KAAK;gBACVwK,QAAQ,EAAE4C,qBAAqB,CAACxE,CAAC,CAACiC,KAAK,CAAC,KAAK,UAAU,GACnD7K,KAAK,GACLoN,qBAAqB,CAACxE,CAAC,CAACiC,KAAK,CAAC;gBAClCsK,QAAQ,EAAE,EAAAD,YAAA,GAAAD,WAAW,KAAApS,MAAA,CAAK7C,KAAK,EAAG,cAAAkV,YAAA,uBAAxBA,YAAA,CAA0BC,QAAQ,KAAI;eACjD;cAEDF,WAAW,GAAGA,WAAW,KAAApS,MAAA,CAAK7C,KAAK,EAAG,CAACmV,QAAQ;aAChD,CAAC;;SAEL,CAAC;QAEF,IAAMC,UAAS,GAAG,SAAZA,SAASA,GAA2E;UAAA,IAAvEC,IAAyB,GAAAlX,SAAA,CAAA4B,MAAA,QAAA5B,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,EAAE;UAAA,IAAEmX,IAAc,GAAAnX,SAAA,CAAA4B,MAAA,QAAA5B,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,EAAE;UACpE,IAAIuC,MAAM,CAACkC,IAAI,CAACyS,IAAI,CAAC,CAACtV,MAAM,KAAK,CAAC,EAAE;YAClC,OAAO,EAAE;;UAGX,OAAOW,MAAM,CAACkK,MAAM,CAACyK,IAAI,CAAC,CAAC5W,GAAG,CAAC,UAAA8W,MAAA,EAA6B;YAAA,IAA1BvU,GAAG,GAAAuU,MAAA,CAAHvU,GAAG;cAAKiU,WAAW,GAAArO,4CAAA,CAAA2O,MAAA,EAAAC,UAAA;YACnD,IAAML,QAAQ,GAAGC,UAAS,CAACH,WAAW,CAACE,QAAQ,KAAAtS,MAAA,CAAA8F,sCAAA,CAC1C2M,IAAI,IACPtU,GAAG,EACJ,CAAC;YAEF,IAAAyU,cAAA,GAAyCb,aAAa,CAACK,WAAW,CAACzK,QAAQ,CAAC;cAApEzM,KAAK,GAAA0X,cAAA,CAAL1X,KAAK;cAAEqR,UAAU,GAAAqG,cAAA,CAAVrG,UAAU;cAAKsG,MAAM,GAAA9O,4CAAA,CAAA6O,cAAA,EAAAE,UAAA;YAEpC,IAAMC,cAAc,GAAG5U,GAAG,KAAKiU,WAAW,CAACzK,QAAQ,IAAIzM,KAAK,IAAI,IAAI,GAAGiD,GAAG,GAAG,EAAE;YAE/E,IAAI,CAACmU,QAAQ,CAACpV,MAAM,EAAE;cACpB,OAAAvC,eAAA,CAAAA,eAAA,KACKkY,MAAM;gBACT1U,GAAG,EAAHA,GAAG;gBACH6U,SAAS,EAAE,GAAAhT,MAAA,CAAA8F,sCAAA,CAAI2M,IAAI,IAAEtU,GAAG,GAAE4N,IAAI,EAAE;gBAChC7Q,KAAK,EAAE,CAACA,KAAK,EAAE6X,cAAc,CAAC,CAAChH,IAAI,CAAC,GAAG,CAAC,CAACkH,IAAI,EAAE;gBAC/C1G,UAAU,EAAEwG,cAAc,IAAIxG;;;YAIlC,OAAA5R,eAAA,CAAAA,eAAA,KACKkY,MAAM;cACT1U,GAAG,EAAHA,GAAG;cACHjD,KAAK,EAAE,CAACA,KAAK,EAAE6X,cAAc,CAAC,CAAChH,IAAI,CAAC,GAAG,CAAC,CAACkH,IAAI,EAAE;cAC/C1G,UAAU,EAAEwG,cAAc,IAAIxG,UAAU;cACxC+F,QAAQ,EAARA;;WAEH,CAAC;SACH;QAED,IAAIY,YAA2B,GAAG,EAAE;QAEpC,IAAI,CAACjF,KAAK,CAAC/Q,MAAM,IAAIqN,qBAAqB,CAACxE,CAAC,CAAC3D,QAAQ,CAAC,UAAU,CAAC,EAAE;UACjE8Q,YAAY,GAAG,CAAC,IAAI,CAACzJ,aAAa,CAAC,CAAC,CAAC,CAACzH,KAAK,CAACuB,QAAQ,IAAI,EAAE,EAAE3H,GAAG,CAC7D,UAACuC,GAAG;YAAA,OAAAxD,eAAA,CAAAA,eAAA,KAAWoX,aAAa,CAAC5T,GAAG,CAAC;cAAE6U,SAAS,EAAE7U;;WAChD,CAAC;;;;QAIH,IAAI,CAACoM,qBAAqB,CAACxE,CAAC,CAAC7I,MAAM,IAAIqN,qBAAqB,CAAC1E,CAAC,CAACzD,QAAQ,CAAC,UAAU,CAAC,EAAE;UACnF8Q,YAAY,CAACxT,IAAI,CAAC;YAChBvB,GAAG,EAAE,OAAO;YACZ6U,SAAS,EAAE,OAAO;YAClB9X,KAAK,EAAE,OAAO;YACdqR,UAAU,EAAE,OAAO;YACnB0F,IAAI,EAAE;WACP,CAAC;;QAGJ,OAAQ1H,qBAAqB,CAAC1E,CAAC,CAAEjK,GAAG,CAAC,UAACuC,GAAG,EAAK;UAC5C,IAAIA,GAAG,KAAK,UAAU,EAAE;YACtB,OAAO;cACLA,GAAG,EAAE,UAAU;cACf6U,SAAS,EAAE,UAAU;cACrB9X,KAAK,EAAE,UAAU;cACjBqR,UAAU,EAAE,UAAU;cACtB0F,IAAI,EAAE;aACP;;UAGH,OAAAtX,eAAA,CAAAA,eAAA,KAAaoX,aAAa,CAAC5T,GAAG,CAAC;YAAE6U,SAAS,EAAE7U;;SAC7C,CAAC,CACC6B,MAAM,CAACuS,UAAS,CAACT,MAAM,CAAC,CAAC,CACzB9R,MAAM,CAACkT,YAAY,CAAC;;;MACxB/U,GAAA;MAAAhB,KAAA,EAED,SAAOgW,QAAQA,CAAC9O,WAAyB,EAAiB;QACxD,OAAO,IAAI,CAACmI,UAAU,CAACnI,WAAW,CAAC,CAAC,CAAC,CAAC;;;MACvClG,GAAA;MAAAhB,KAAA,EAED,SAAOiW,UAAUA,CAAC/O,WAAyB,EAAmB;QAC5D,OAAO,IAAI,CAACmI,UAAU,CAACnI,WAAW,CAAC;;;;EAIvC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;MAxBElG,GAAA;MAAAhB,KAAA,EAyBA,SAAOmP,WAAWA,CAACjI,WAAyB,EAAuB;QAAA,IAAAgP,MAAA;QACjE,IAAM9I,qBAAqB,GAAG,IAAI,CAACC,oBAAoB,CAACnG,WAAW,CAAC;QACpE,IAAMd,QAAQ,GAAG,IAAI,CAACkG,aAAa,CAChC7N,GAAG,CAAC,UAAA8V,CAAC;UAAA,OAAIA,CAAC,CAAC1G,UAAU,CAACzH,QAAQ;UAAC,CAC/BmD,MAAM,CAAC,UAAC6B,GAAG,EAAEwI,CAAC;UAAA,OAAApW,eAAA,CAAAA,eAAA,KAAW4N,GAAG,GAAKwI,CAAC;SAAG,EAAE,EAAE,CAAC;QAE7C,IAAMzE,WAAW,GAAGzD,MAAM,CAAC,IAAI,CAACY,aAAa,CAAC7N,GAAG,CAAC,UAACiU,CAAC,EAAE7H,KAAK;UAAA,OAAK+G,UAAI,CAClEnT,SAAG,CAACyX,MAAI,CAAC3G,UAAU,CAACnC,qBAAqB,CAACxE,CAAC,EAAEiC,KAAK,CAAC,CAAC,EACpDa,MAAM,EACNyK,UACF,CAAC,CACCD,MAAI,CAAC7F,mCAAmC,CAACxF,KAAK,CAChD,CAAC;UAAC,CAAC;QAEH,IAAME,iBAAiB,GAAG,IAAIlB,GAAG,EAAU;QAC3C,IAAI,IAAI,CAACwC,SAAS,KAAKP,UAAU,CAACG,cAAc,EAAE;UAChD,IAAMqH,WAAW,GAAGC,aAAO,CAAC,IAAI,CAACjH,aAAa,CAAC7N,GAAG,CAAC,UAAA2X,MAAA;YAAA,IAAAC,gBAAA;YAAA,IAAGxR,KAAK,GAAAuR,MAAA,CAALvR,KAAK;YAAA,QAAAwR,gBAAA,GAAOxR,KAAK,CAACuB,QAAQ,cAAAiQ,gBAAA,cAAAA,gBAAA,GAAI,EAAE;YAAC,CAAC;UACxF/C,WAAW,CAAChO,MAAM,CAAC,UAACoO,CAAC,EAAE5T,CAAC,EAAE6T,CAAC;YAAA,OAAKA,CAAC,CAAC5P,OAAO,CAAC2P,CAAC,CAAC,KAAK5T,CAAC;YAAC,CAACc,OAAO,CAAC,UAAAgT,CAAC;YAAA,OAAI7I,iBAAiB,CAAC9J,GAAG,CAAC2S,CAAC,CAAC;YAAC;;QAG5F,OAAOzE,WAAW,CAAC1Q,GAAG,CAAC,UAAC8Q,UAAU,EAAEzP,CAAC,EAAK;UACxC,IAAMwW,WAAW,GAAG3L,WAAW,CAAC4E,UAAU,EAAEzP,CAAC,EAAEsN,qBAAqB,EAAErC,iBAAiB,CAAC;UACxF,OAAO;YACLhN,KAAK,EAAEmY,MAAI,CAACtG,gBAAgB,CAC1BxC,qBAAqB,CAACxE,CAAC,CAAC3C,IAAI,CAAC,UAAAvH,CAAC;cAAA,OAAIA,CAAC,KAAK,UAAU;cAAC,GACjD6X,cAAQ,CAAC,CAAC,EAAED,WAAW,CAAC,CAACzT,MAAM,CAC7BuD,QAAQ,CACN8F,SAAS,CAACsG,eAAe,CAACjD,UAAU,CAAC,CACtC,CAACxR,KACJ,CAAC,GACDuY,WAAW,EAAE,IACjB,CAAC;YACDlH,UAAU,EAAE8G,MAAI,CAACtG,gBAAgB,CAC/BxC,qBAAqB,CAACxE,CAAC,CAAC3C,IAAI,CAAC,UAAAvH,CAAC;cAAA,OAAIA,CAAC,KAAK,UAAU;cAAC,GACjD6X,cAAQ,CAAC,CAAC,EAAED,WAAW,CAAC,CAACzT,MAAM,CAC7BuD,QAAQ,CACN8F,SAAS,CAACsG,eAAe,CAACjD,UAAU,CAAC,CACtC,CAACH,UACJ,CAAC,GACDkH,WAAW,EAAE,IACjB,CAAC;YACDtV,GAAG,EAAEkV,MAAI,CAACtG,gBAAgB,CAAC0G,WAAW,EAAE,GAAG,CAAC;YAC5CnJ,OAAO,EAAEoC;WACV;SACF,CAAC;;;MACHvO,GAAA;MAAAhB,KAAA,EAED,SAAO6E,KAAKA,GAAU;QACpB,IAAI,IAAI,CAACwH,SAAS,KAAKP,UAAU,CAACC,aAAa,EAAE;UAC/C,MAAM,IAAIS,KAAK,mCAAA3J,MAAA,CAAmC,IAAI,CAACwJ,SAAS,uCAAoC,CAAC;;QAGvG,OAAO,IAAI,CAACC,aAAa,CAAC,CAAC,CAAC,CAACzH,KAAK;;;MACnC7D,GAAA;MAAAhB,KAAA,EAED,SAAOuM,UAAUA,GAAe;QAC9B,OAAO,IAAI,CAACJ,YAAY,CAACI,UAAU,IAAI,IAAI;;;;EAI/C;EACA;;MAFEvL,GAAA;MAAAhB,KAAA,EAGA,SAAOwW,SAASA,GAA8B;QAC5C,OAAO,IAAI,CAAClK,aAAa,CAAC,CAAC,CAAC,CAACmK,KAAK;;;MACnCzV,GAAA;MAAAhB,KAAA,EAED,SAAO0W,OAAOA,GAAQ;QACpB,IAAI,IAAI,CAACrK,SAAS,KAAKP,UAAU,CAACC,aAAa,EAAE;UAC/C,MAAM,IAAIS,KAAK,mCAAA3J,MAAA,CAAmC,IAAI,CAACwJ,SAAS,uCAAoC,CAAC;;QAGvG,OAAO,IAAI,CAACC,aAAa,CAAC,CAAC,CAAC,CAAChB,IAAI;;;MAClCtK,GAAA;MAAAhB,KAAA,EAED,SAAO6N,UAAUA,GAAqB;QACpC,IAAI,IAAI,CAACxB,SAAS,KAAKP,UAAU,CAACC,aAAa,EAAE;UAC/C,MAAM,IAAIS,KAAK,mCAAA3J,MAAA,CAAmC,IAAI,CAACwJ,SAAS,uCAAoC,CAAC;;QAGvG,OAAO,IAAI,CAACC,aAAa,CAAC,CAAC,CAAC,CAACuB,UAAU;;;MACxC7M,GAAA;MAAAhB,KAAA,EAED,SAAQqQ,mCAAmCA,CAACZ,WAAmB,EAAE;QAC/D,IAAIA,WAAW,KAAK3R,SAAS,EAAE;UAC7B,MAAM,IAAI0O,KAAK,CAAC,yBAAyB,CAAC;;QAG5C,IAAI,CAAC,IAAI,CAACE,sBAAsB,CAAC+C,WAAW,CAAC,EAAE;UAC7C,IAAAkH,qBAAA,GAAwB,IAAI,CAACrK,aAAa,CAACmD,WAAW,CAAC;YAA/CnE,IAAI,GAAAqL,qBAAA,CAAJrL,IAAI;YAAEzG,KAAK,GAAA8R,qBAAA,CAAL9R,KAAK;UACnB,IAAMW,cAAc,GAAG,CAACX,KAAK,CAACW,cAAc,IAAI,EAAE,EAAEF,MAAM,CAAC,UAAAG,EAAE;YAAA,OAAI6K,OAAO,CAAC7K,EAAE,CAACnG,WAAW,CAAC;YAAC;UAEzF,IAAI,CAACoN,sBAAsB,CAAC+C,WAAW,CAAC,GAAGnE,IAAI,CAAC7M,GAAG,CAAC,UAAA8M,GAAG;YAAA,OAAA/N,eAAA,CAAAA,eAAA,KAEhD+N,GAAG,GAEJzG,eAAS,CAACpE,MAAM,CAACkC,IAAI,CAAC2I,GAAG,CAAC,CACvBjG,MAAM,CACL,UAAAsR,KAAK,EAAI;cACP,IAAMC,OAAO,GAAGrR,cAAc,CAACS,IAAI,CAAC,UAAAvH,CAAC;gBAAA,OAAIA,CAAC,CAACyH,SAAS,KAAKyQ,KAAK;gBAAC;cAC/D,OAAOC,OAAO,IAAI,CAACtL,GAAG,CAACW,SAAS,CAACiE,mBAAmB,CAAC0G,OAAO,CAAC,CAAC;aAElE,CAAC,CAACpY,GAAG,CAAC,UAAAmY,KAAK;cAAA,OACT,CAAC1K,SAAS,CAACiE,mBAAmB,CAAC3K,cAAc,CAACS,IAAI,CAAC,UAAAvH,CAAC;gBAAA,OAAIA,CAAC,CAACyH,SAAS,KAAKyQ,KAAK;gBAAE,CAAC,EAAErL,GAAG,CAACqL,KAAK,CAAC,CAAC;aAC9F,CAAC,CAAC;WAGV,CAAC;;QAGJ,OAAO,IAAI,CAAClK,sBAAsB,CAAC+C,WAAW,CAAC;;;;EAInD;EACA;EACA;EACA;EACA;EACA;EACA;;MAPEzO,GAAA;MAAAhB,KAAA,EAQA,SAAO8W,SAASA,GAAqB;QAAA,IAAAC,MAAA;QACnC,OAAO,IAAI,CAACzK,aAAa,CAAC7N,GAAG,CAAC,UAACyK,MAAM;UAAA,OAAK,IAAIgD,SAAS,CAAC;YACtDG,SAAS,EAAEP,UAAU,CAACC,aAAa;YACnCQ,UAAU,EAAA/O,eAAA,CAAAA,eAAA,KACL0L,MAAM,CAACrE,KAAK;cACfwH,SAAS,EAAEP,UAAU,CAACC;cACvB;YACD3J,OAAO,EAAE,CAAC8G,MAAM;WACjB,EAAE6N,MAAI,CAACtQ,OAAO,CAAC;UAAC;;;;EAIrB;EACA;;MAFEzF,GAAA;MAAAhB,KAAA,EAGA,SAAOgX,SAASA,GAAqB;QACnC,OAAO;UACL7K,YAAY,EAAE1L,WAAK,CAAC,IAAI,CAAC0L,YAAY;SACtC;;;MACFnL,GAAA;MAAAhB,KAAA,EA1kCD,SAAcwS,eAAeA,CAACjD,UAAoB,EAAU;QAC1D,OAAOA,UAAU,CAACA,UAAU,CAACxP,MAAM,GAAG,CAAC,CAAC;;;MACzCiB,GAAA;MAAAhB,KAAA,EAED,SAAcmQ,mBAAmBA,CAAC1K,EAAiB,EAAE;QACnD,UAAA5C,MAAA,CAAU4C,EAAE,CAACU,SAAS,OAAAtD,MAAA,CAAI4C,EAAE,CAACnG,WAAW;;;;EAI5C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;MAbE0B,GAAA;MAAAhB,KAAA,EAcA,SAAciX,WAAWA,CAA0C3L,IAAsB,EAAE7E,OAAgB,EAAoB;QAC7H,OAAO,IAAIyF,SAAS,CAACZ,IAAI,CAACa,YAAY,EAAE1F,OAAO,CAAC;;;MACjDzF,GAAA;MAAAhB,KAAA,EAkQD,SAAcgQ,wBAAwBA,CAACnL,KAAkB,EAAEqC,WAAyB,EAAmB;QACrG,IAAMgQ,kBAA+B,GAAG;UACtCxO,CAAC,EAAE,EAAE;UACLE,CAAC,EAAE,EAAE;UACLyI,gBAAgB,EAAE,IAAI;UACtBuB,aAAa,EAAE;SAChB;QAED,IAAAuE,MAAA,GAGItS,KAAK,IAAI,EAAE;UAAAuS,eAAA,GAAAD,MAAA,CAFb/Q,QAAQ;UAARA,QAAQ,GAAAgR,eAAA,cAAG,EAAE,GAAAA,eAAA;UAAAC,iBAAA,GAAAF,MAAA,CACb9Q,UAAU;UAAVA,UAAU,GAAAgR,iBAAA,cAAG,EAAE,GAAAA,iBAAA;QAGjB,IAAM7R,cAAc,GAAG,CAAC,CAAAX,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEW,cAAc,KAAI,EAAE,EAAEF,MAAM,CAAC,UAAAG,EAAE;UAAA,OAAI,CAAC,CAACA,EAAE,CAACnG,WAAW;UAAC;QAEnF4H,WAAW,GAAGA,WAAW,KAAK1B,cAAc,CAACzF,MAAM,GAAG;UACpD2I,CAAC,EAAElD,cAAc,CAAC/G,GAAG,CAAC,UAAAgH,EAAE;YAAA,OAAIyG,SAAS,CAACiE,mBAAmB,CAAC1K,EAAE,CAAC;YAAC;UAC9DmD,CAAC,EAAEvC;SACJ,GAAG;UACFqC,CAAC,EAAErC,UAAU;UACbuC,CAAC,EAAE;SACJ,CAAC;QAEF,IAAMwE,qBAAqB,GAAGoH,mBAAa,CAACtN,WAAW,EAAEgQ,kBAAkB,CAAoB;QAE/F,IAAMI,8BAA8B,GAAG,SAAjCA,8BAA8BA,CAAI9H,IAAc;UAAA,OAAKA,IAAI,CAAC/Q,GAAG,CACjE,UAAA8Y,MAAM;YAAA,OAEF/R,cAAc,CAACS,IAAI,CAAC,UAAAR,EAAE;cAAA,OAAIA,EAAE,CAACU,SAAS,KAAKoR,MAAM;cAAC,IAClD,CAAClR,UAAU,CAACJ,IAAI,CAAC,UAAAvH,CAAC;cAAA,OAAIA,CAAC,KAAK6Y,MAAM;cAAC,GAEnCrL,SAAS,CAACiE,mBAAmB,CAAC,CAAC,CAAAtL,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEW,cAAc,KAAI,EAAE,EAAES,IAAI,CAAC,UAAAR,EAAE;cAAA,OAAIA,EAAE,CAACU,SAAS,KAAKoR,MAAM;cAAE,CAAC,GACjGA,MAAM;WAEZ,CAAC;;QAEDnK,qBAAqB,CAAC1E,CAAC,GAAG4O,8BAA8B,CAAClK,qBAAqB,CAAC1E,CAAC,CAAC;QACjF0E,qBAAqB,CAACxE,CAAC,GAAG0O,8BAA8B,CAAClK,qBAAqB,CAACxE,CAAC,CAAC;QAEjF,IAAM4O,qBAAqB,GAAGpK,qBAAqB,CAAC1E,CAAC,CAAC7F,MAAM,CAACuK,qBAAqB,CAACxE,CAAC,CAAC;QACrF,IAAM6O,aAAa,GAAGjS,cAAc,CAAC/G,GAAG,CAAC,UAAAgH,EAAE;UAAA,OAAIyG,SAAS,CAACiE,mBAAmB,CAAC1K,EAAE,CAAC;UAAC,CAAC5C,MAAM,CAACwD,UAAU,CAAC;QAEpG,IAAMqR,eAAe,GAAG,SAAlBA,eAAeA,CAAI1W,GAAW;UAAA,OAAKyW,aAAa,CAACxS,QAAQ,CAACjE,GAAG,CAAC,IAAIA,GAAG,KAAK,UAAU;;QAE1FoM,qBAAqB,CAAC1E,CAAC,GAAG0E,qBAAqB,CAAC1E,CAAC,CAAC7F,MAAM,CACtD4U,aAAa,CAACnS,MAAM,CAAC,UAAA5G,CAAC;UAAA,OAAI,CAAC8Y,qBAAqB,CAACvS,QAAQ,CAACvG,CAAC,CAAC,IAAIA,CAAC,KAAK,kBAAkB;UAC1F,CAAC,CACE4G,MAAM,CAACoS,eAAe,CAAC;QAC1BtK,qBAAqB,CAACxE,CAAC,GAAGwE,qBAAqB,CAACxE,CAAC,CAACtD,MAAM,CAACoS,eAAe,CAAC;QAEzE,IAAI,CAACtK,qBAAqB,CAAC1E,CAAC,CAAC7F,MAAM,CAACuK,qBAAqB,CAACxE,CAAC,CAAC,CAAC3C,IAAI,CAAC,UAAAvH,CAAC;UAAA,OAAIA,CAAC,KAAK,UAAU;UAAC,EAAE;UACxF0O,qBAAqB,CAACxE,CAAC,CAACrG,IAAI,CAAC,UAAU,CAAC;;QAG1C,IAAI8D,UAAU,CAACpB,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAACmI,qBAAqB,CAACxE,CAAC,CAAC/F,MAAM,CAACuK,qBAAqB,CAAC1E,CAAC,CAAC,CAACzD,QAAQ,CAAC,kBAAkB,CAAC,EAAE;UACpImI,qBAAqB,CAACxE,CAAC,CAAC+O,OAAO,CAAC,kBAAkB,CAAC;;QAGrD,IAAI,CAACvR,QAAQ,CAACrG,MAAM,EAAE;UACpBqN,qBAAqB,CAAC1E,CAAC,GAAG0E,qBAAqB,CAAC1E,CAAC,CAACpD,MAAM,CAAC,UAAA5G,CAAC;YAAA,OAAIA,CAAC,KAAK,UAAU;YAAC;UAC/E0O,qBAAqB,CAACxE,CAAC,GAAGwE,qBAAqB,CAACxE,CAAC,CAACtD,MAAM,CAAC,UAAA5G,CAAC;YAAA,OAAIA,CAAC,KAAK,UAAU;YAAC;;QAGjF,OAAO0O,qBAAqB;;;EAC7B;;MCnakBwK,QAAQ;IAG3B,SAAAA,SAAmBC,QAAyB,EAAE;MAAAzL,mCAAA,OAAAwL,QAAA;MAAA1R,mCAAA;MAC5C,IAAI,CAAC2R,QAAQ,GAAGA,QAAQ;;IACzB,OAAAlL,gCAAA,CAAAiL,QAAA;MAAA5W,GAAA;MAAAhB,KAAA,EAED,SAAO8X,QAAQA,GAAY;QACzB,OAAO,IAAI,CAACD,QAAQ,CAACE,GAAG;;;MACzB/W,GAAA;MAAAhB,KAAA,EAED,SAAO+X,GAAGA,GAAW;QACnB,OAAO,IAAI,CAACD,QAAQ,EAAE,CAACC,GAAG,CAAC,CAAC,CAAC;;;EAC9B;;ECKH,IAAMC,SAAS,GAAG,SAAZA,SAASA,CAAIC,WAAkB;IAAA,OAAKnT,eAAS,CACjDmT,WAAW,CAACxZ,GAAG,CAAC,UAACmV,CAAC;MAAA,OAAK,CAACA,CAAC,CAAClW,IAAI,EAAEkW,CAAC,CAAC;MACpC,CAAC;EAAA;EAED,IAAMsE,SAAS,GAAG;IAChBC,MAAM,EAAE,CACN;MAAEza,IAAI,EAAE,UAAU;MAAEK,KAAK,EAAE;KAAY,EACvC;MAAEL,IAAI,EAAE,aAAa;MAAEK,KAAK,EAAE;KAAoB,EAClD;MAAEL,IAAI,EAAE,QAAQ;MAAEK,KAAK,EAAE;KAAU,EACnC;MAAEL,IAAI,EAAE,WAAW;MAAEK,KAAK,EAAE;KAAkB,EAC9C;MAAEL,IAAI,EAAE,KAAK;MAAEK,KAAK,EAAE;KAAU,EAChC;MAAEL,IAAI,EAAE,QAAQ;MAAEK,KAAK,EAAE;KAAc,EACvC;MAAEL,IAAI,EAAE,YAAY;MAAEK,KAAK,EAAE;KAAe,EAC5C;MAAEL,IAAI,EAAE,eAAe;MAAEK,KAAK,EAAE;KAAuB,EACvD;MAAEL,IAAI,EAAE,UAAU;MAAEK,KAAK,EAAE;KAAa,EACxC;MAAEL,IAAI,EAAE,aAAa;MAAEK,KAAK,EAAE;KAAqB,CACpD;IACDqa,MAAM,EAAE,CACN;MAAE1a,IAAI,EAAE,QAAQ;MAAEK,KAAK,EAAE;KAAU,EACnC;MAAEL,IAAI,EAAE,WAAW;MAAEK,KAAK,EAAE;KAAkB,EAC9C;MAAEL,IAAI,EAAE,KAAK;MAAEK,KAAK,EAAE;KAAU,EAChC;MAAEL,IAAI,EAAE,QAAQ;MAAEK,KAAK,EAAE;KAAc,EACvC;MAAEL,IAAI,EAAE,IAAI;MAAEK,KAAK,EAAE;KAAK,EAC1B;MAAEL,IAAI,EAAE,KAAK;MAAEK,KAAK,EAAE;KAAM,EAC5B;MAAEL,IAAI,EAAE,IAAI;MAAEK,KAAK,EAAE;KAAK,EAC1B;MAAEL,IAAI,EAAE,KAAK;MAAEK,KAAK,EAAE;KAAM,CAC7B;IACDsa,IAAI,EAAE,CACJ;MAAE3a,IAAI,EAAE,QAAQ;MAAEK,KAAK,EAAE;KAAU,EACnC;MAAEL,IAAI,EAAE,WAAW;MAAEK,KAAK,EAAE;KAAkB,EAC9C;MAAEL,IAAI,EAAE,aAAa;MAAEK,KAAK,EAAE;KAAiB,EAC/C;MAAEL,IAAI,EAAE,gBAAgB;MAAEK,KAAK,EAAE;KAAqB,EACtD;MAAEL,IAAI,EAAE,WAAW;MAAEK,KAAK,EAAE;KAAc,EAC1C;MAAEL,IAAI,EAAE,eAAe;MAAEK,KAAK,EAAE;KAAoB,EACpD;MAAEL,IAAI,EAAE,YAAY;MAAEK,KAAK,EAAE;KAAe,EAC5C;MAAEL,IAAI,EAAE,gBAAgB;MAAEK,KAAK,EAAE;KAAqB;EAE1D,CAAC;;EAED;EACA;EACA;EAFA,IAGqBua,IAAI;IAgBvB,SAAAA,KAAmBC,YAA0B,EAAE;MAAAnM,mCAAA,OAAAkM,IAAA;;EAdjD;EACA;MAFEpS,mCAAA;;EAMF;EACA;MAFEA,mCAAA;;EAMF;EACA;MAFEA,mCAAA;MAME,IAAI,CAACY,IAAI,GAAGyR,YAAY;MACxB,IAAQC,KAAK,GAAK,IAAI,CAAC1R,IAAI,CAAnB0R,KAAK;MACb,IAAI,CAACA,KAAK,GAAGA,KAAK;MAClB,IAAI,CAACC,QAAQ,GAAG3T,eAAS,CACvB0T,KAAK,CAAC/Z,GAAG,CAAC,UAACia,CAAC;QAAA,OAAK,CACfA,CAAC,CAAChb,IAAI,EACN;UACE0I,QAAQ,EAAE4R,SAAS,CAACU,CAAC,CAACtS,QAAQ,CAAC;UAC/BC,UAAU,EAAE2R,SAAS,CAACU,CAAC,CAACrS,UAAU,CAAC;UACnCsH,QAAQ,EAAEqK,SAAS,CAACU,CAAC,CAAC/K,QAAQ;SAC/B,CACF;QACH,CAAC;;;;EAIL;EACA;EACA;EACA;EACA;IALE,OAAAhB,gCAAA,CAAA2L,IAAA;MAAAtX,GAAA;MAAAhB,KAAA,EAMA,SAAO2Y,eAAeA,CAAC/T,MAAoC,EAAEgU,UAAsB,EAAkE;QACnJ,OAAOlN,YAAM,CAAC,IAAI,CAAC8M,KAAK,CAAC/Z,GAAG,CAAC,UAACia,CAAC;UAAA,OAAKA,CAAC,CAACE,UAAU,CAAC;UAAC,CAAC,CAChDC,IAAI,CAAC,UAAClF,CAAC,EAAEe,CAAC;UAAA,OAAMf,CAAC,CAAC5V,KAAK,GAAG2W,CAAC,CAAC3W,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;SAAC,CAAC;;;MAChDiD,GAAA;MAAAhB,KAAA,EAED,SAAO8Y,oBAAoBA,GAAG;QAC5B,IAAMC,UAAU,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,CAAC;QAE3E,OAAO,IAAI,CAACP,KAAK,CAACjP,MAAM,CACtB,UAACC,IAAI,EAAEwP,IAAI,EAAK;UACdD,UAAU,CAACnY,OAAO,CAAC,UAACI,GAAG,EAAK;YAC1B,IAAI4I,OAA2D,GAAG,EAAE;;;YAGpE,QAAQ5I,GAAG;cACT,KAAK,UAAU;gBACb4I,OAAO,GAAGoP,IAAI,CAAC5S,QAAQ,IAAI,EAAE;gBAC7B;cACF,KAAK,YAAY;gBACfwD,OAAO,GAAGoP,IAAI,CAAC3S,UAAU,IAAI,EAAE;gBAC/B;cACF,KAAK,UAAU;gBACbuD,OAAO,GAAGoP,IAAI,CAACrL,QAAQ,IAAI,EAAE;gBAC7B;cACF,KAAK,gBAAgB;gBACnB/D,OAAO,GAAGoP,IAAI,CAAC3S,UAAU,CAACf,MAAM,CAAC,UAACsO,CAAC;kBAAA,OAAKA,CAAC,CAACkB,IAAI,KAAK,MAAM;kBAAC,IAAI,EAAE;gBAChE;;;;;YAKJtL,IAAI,CAACxI,GAAG,CAAC,CAACuB,IAAI,CAAC;cACb+L,QAAQ,EAAE0K,IAAI,CAACtb,IAAI;cACnBub,SAAS,EAAED,IAAI,CAACjb,KAAK;cACrB+W,IAAI,EAAEkE,IAAI,CAAClE,IAAI;cACf,UAAQkE,IAAI,UAAO;cACnBpP,OAAO,EAAPA;aACD,CAAC;WACH,CAAC;UAEF,OAAOJ,IAAI;SACZ,EACD;UACEpD,QAAQ,EAAE,EAAE;UACZC,UAAU,EAAE,EAAE;UACdsH,QAAQ,EAAE,EAAE;UACZnI,cAAc,EAAE;SAEpB,CAAC;;;;EAIL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;MAhBExE,GAAA;MAAAhB,KAAA,EAiBA,SAAOkZ,aAAaA,CAClBC,UAAkB,EAClBP,UAAmB,EACoB;QAAA,IAAA1J,KAAA;QACvC,IAAAkK,iBAAA,GAAeD,UAAU,CAACtZ,KAAK,CAAC,GAAG,CAAC;UAAAwZ,kBAAA,GAAAtY,kCAAA,CAAAqY,iBAAA;UAA7BJ,IAAI,GAAAK,kBAAA;QAEX,IAAI,CAAC,IAAI,CAACZ,QAAQ,CAACO,IAAI,CAAC,EAAE;UACxB,OAAO;YAAEjb,KAAK,EAAEob,UAAU;YAAEG,KAAK,oBAAAzW,MAAA,CAAoBmW,IAAI,iBAAAnW,MAAA,CAAcsW,UAAU;WAAK;;QAGxF,IAAMI,WAAW,GAAGrU,KAAK,CAACC,OAAO,CAACyT,UAAU,CAAC,GAAGA,UAAU,GAAG,CAACA,UAAU,CAAC;QACzE,IAAM9O,MAAM,GAAGyP,WAAW,CACvB9a,GAAG,CAAC,UAACqW,IAAI;UAAA,OAAK5F,KAAI,CAACuJ,QAAQ,CAACO,IAAI,CAAC,CAAClE,IAAI,CAAC,IAAI5F,KAAI,CAACuJ,QAAQ,CAACO,IAAI,CAAC,CAAClE,IAAI,CAAC,CAACqE,UAAU,CAAC;UAAC,CACjFlT,IAAI,CAAC,UAAC2N,CAAC;UAAA,OAAKA,CAAC;UAAC;QAEjB,IAAI,CAAC9J,MAAM,EAAE;UACX,OAAO;YACL/L,KAAK,EAAEob,UAAU;YACjBG,KAAK,qBAAAzW,MAAA,CAAqBsW,UAAU;WACrC;;QAGH,OAAOrP,MAAM;;;MACd9I,GAAA;MAAAhB,KAAA,EAED,SAAOuH,2BAA2BA,CAAC4R,UAAkB,EAA6B;QAAA,IAAApI,MAAA;QAChF,IAAAyI,kBAAA,GAAeL,UAAU,CAACtZ,KAAK,CAAC,GAAG,CAAC;UAAA4Z,kBAAA,GAAA1Y,kCAAA,CAAAyY,kBAAA;UAA7BR,IAAI,GAAAS,kBAAA;QACX,IAAI,CAAC,IAAI,CAAChB,QAAQ,CAACO,IAAI,CAAC,EAAE;UACxB,OAAO,IAAI;;QAEb,OAAOtY,MAAM,CAACkC,IAAI,CAAC,IAAI,CAAC6V,QAAQ,CAACO,IAAI,CAAC,CAAC3S,UAAU,IAAI,EAAE,CAAC,CAACJ,IAAI,CAC3D,UAACvH,CAAC;UAAA,OAAKqS,MAAI,CAAC0H,QAAQ,CAACO,IAAI,CAAC,CAAC3S,UAAU,CAAC3H,CAAC,CAAC,CAACoW,IAAI,KAAK,MAAM;SAC1D,CAAC;;;MACF9T,GAAA;MAAAhB,KAAA,EAED,SAAO0Z,wBAAwBA,CAACP,UAAkB,EAAEP,UAAqC,EAAoB;QAC3G,IAAM9O,MAAM,GAAG,IAAI,CAACoP,aAAa,CAACC,UAAU,EAAEP,UAAU,CAAC;QAEzD,IAAI,OAAO,IAAI9O,MAAM,IAAI,EAAE,MAAM,IAAIA,MAAM,CAAC,IAAIA,MAAM,CAACgL,IAAI,KAAK,SAAS,EAAE;UACzE,OAAOoD,SAAS,CAACC,MAAM;;QAGzB,OAAOD,SAAS,CAACpO,MAAM,CAACgL,IAAI,CAAC,IAAIoD,SAAS,CAACC,MAAM;;;EAClD;;MC7NkBwB,cAAc;IAGjC,SAAAA,eAAmBC,gBAAkC,EAAE;MAAAxN,mCAAA,OAAAuN,cAAA;MAAAzT,mCAAA;MACrD,IAAI,CAAC0T,gBAAgB,GAAGA,gBAAgB;;IACzC,OAAAjN,gCAAA,CAAAgN,cAAA;MAAA3Y,GAAA;MAAAhB,KAAA,EAED,SAAO6Z,KAAKA,GAAW;QACrB,OAAO,IAAI,CAACD,gBAAgB,CAACC,KAAK;;;MACnC7Y,GAAA;MAAAhB,KAAA,EAED,SAAO8Z,WAAWA,GAAW;QAC3B,OAAO,IAAI,CAACF,gBAAgB,CAACE,WAAW;;;EACzC;;;;WCfoBC,cAAcA,CAAAC,EAAA;IAAA,OAAAC,eAAA,CAAA/b,KAAA,OAAAC,SAAA;EAAA;EAgCpC,SAAA8b;IAAAA,eAAA,GAAAC,uCAAA,cAAAC,uCAAA,CAAAC,IAAA,CAhCM,SAAAC,QAA+B7Z,GAAa;MAAA,IAAA8Z,IAAA,EAAAC,MAAA,EAAAC,qBAAA,EAAAC,IAAA,EAAAza,KAAA,EAAA0a,mBAAA,EAAAC,yBAAA,EAAAC,iBAAA,EAAAC,cAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,KAAA,EAAAC,EAAA;MAAA,OAAAd,uCAAA,CAAAe,IAAA,WAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;;YAE3Cf,IAAS,GAAG9Z,GAAG,CAAC8Z,IAAI;YAAA,MAEtBA,IAAI,IAAI,OAAOA,IAAI,CAACgB,SAAS,KAAK,UAAU;cAAAH,QAAA,CAAAE,IAAA;cAAA;;YACxCd,MAAM,GAAGD,IAAI,CAACgB,SAAS,EAAE;YAAEH,QAAA,CAAAC,IAAA;UAAA;YAEpBD,QAAA,CAAAE,IAAA;YAAA,OAAAE,wCAAA,CACqBhB,MAAM,CAACiB,IAAI,EAAE;UAAA;YAAAhB,qBAAA,GAAAW,QAAA,CAAAM,IAAA;YAAnChB,IAAI,GAAAD,qBAAA,CAAJC,IAAI;YAAEza,KAAK,GAAAwa,qBAAA,CAALxa,KAAK;YAAA,KACfya,IAAI;cAAAU,QAAA,CAAAE,IAAA;cAAA;;YAAA,OAAAF,QAAA,CAAAO,MAAA;UAAA;YAAA,KACJ1b,KAAK;cAAAmb,QAAA,CAAAE,IAAA;cAAA;;YAAAF,QAAA,CAAAE,IAAA;YAAE,OAAMrb,KAAK;UAAA;YAAAmb,QAAA,CAAAE,IAAA;YAAA;UAAA;YAAAF,QAAA,CAAAC,IAAA;YAGxB,CAAAV,mBAAA,GAAAH,MAAM,CAACoB,WAAW,cAAAjB,mBAAA,eAAlBA,mBAAA,CAAAkB,IAAA,CAAArB,MAAqB,CAAC;YAAC,OAAAY,QAAA,CAAAU,MAAA;UAAA;YAAA,OAAAV,QAAA,CAAAO,MAAA;UAAA;YAAA,MAMvBpB,IAAI,IAAIwB,MAAM,CAACC,aAAa,IAAIzB,IAAI;cAAAa,QAAA,CAAAE,IAAA;cAAA;;YAAAV,yBAAA;YAAAC,iBAAA;YAAAO,QAAA,CAAAC,IAAA;YAAAN,SAAA,GAAAkB,gBAAA,CACZ1B,IAAI;UAAA;YAAAa,QAAA,CAAAE,IAAA;YAAA,OAAAE,wCAAA,CAAAT,SAAA,CAAAO,IAAA;UAAA;YAAA,MAAAV,yBAAA,KAAAI,KAAA,GAAAI,QAAA,CAAAM,IAAA,EAAAhB,IAAA;cAAAU,QAAA,CAAAE,IAAA;cAAA;;YAAbL,KAAK,GAAAD,KAAA,CAAA/a,KAAA;YAAA,MAChB,OAAOgb,KAAK,KAAK,QAAQ;cAAAG,QAAA,CAAAE,IAAA;cAAA;;YAAAF,QAAA,CAAAE,IAAA;YAE3B,OAAM,IAAIY,WAAW,EAAE,CAACC,MAAM,CAAClB,KAAK,CAAC;UAAA;YAAAG,QAAA,CAAAE,IAAA;YAAA;UAAA;YAAAF,QAAA,CAAAE,IAAA;YAErC,OAAM,IAAIc,UAAU,CAACnB,KAAK,CAAC;UAAA;YAAAL,yBAAA;YAAAQ,QAAA,CAAAE,IAAA;YAAA;UAAA;YAAAF,QAAA,CAAAE,IAAA;YAAA;UAAA;YAAAF,QAAA,CAAAC,IAAA;YAAAH,EAAA,GAAAE,QAAA;YAAAP,iBAAA;YAAAC,cAAA,GAAAI,EAAA;UAAA;YAAAE,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAAC,IAAA;YAAA,MAAAT,yBAAA,IAAAG,SAAA;cAAAK,QAAA,CAAAE,IAAA;cAAA;;YAAAF,QAAA,CAAAE,IAAA;YAAA,OAAAE,wCAAA,CAAAT,SAAA;UAAA;YAAAK,QAAA,CAAAC,IAAA;YAAA,KAAAR,iBAAA;cAAAO,QAAA,CAAAE,IAAA;cAAA;;YAAA,MAAAR,cAAA;UAAA;YAAA,OAAAM,QAAA,CAAAU,MAAA;UAAA;YAAA,OAAAV,QAAA,CAAAU,MAAA;UAAA;YAAA,OAAAV,QAAA,CAAAO,MAAA;UAAA;YAAA,MAM3B,IAAIlP,KAAK,CAAC,8CAA8C,CAAC;UAAA;UAAA;YAAA,OAAA2O,QAAA,CAAAiB,IAAA;;SAAA/B,OAAA;KAChE;IAAA,OAAAJ,eAAA,CAAA/b,KAAA,OAAAC,SAAA;EAAA;;;;;ECqCD;EACA;EACA;MACake,aAAa;IAexB,SAAAA,cAAAxb,IAAA,EAUG;MAAA,IATDyb,aAAa,GAAAzb,IAAA,CAAbyb,aAAa;QACbC,MAAM,GAAA1b,IAAA,CAAN0b,MAAM;QACNC,MAAM,GAAA3b,IAAA,CAAN2b,MAAM;QAAAC,YAAA,GAAA5b,IAAA,CACN6b,OAAO;QAAPA,OAAO,GAAAD,YAAA,cAAG,EAAE,GAAAA,YAAA;QACZE,WAAW,GAAA9b,IAAA,CAAX8b,WAAW;QACXC,YAAY,GAAA/b,IAAA,CAAZ+b,YAAY;QACZC,MAAM,GAAAhc,IAAA,CAANgc,MAAM;MAAAzQ,mCAAA,OAAAiQ,aAAA;MAAAnW,mCAAA;MAAAA,mCAAA;MAAAA,mCAAA;MAAAA,mCAAA;MAAAA,mCAAA;MAAAA,mCAAA;MAAAA,mCAAA;MAIN,IAAI,CAACoW,aAAa,GAAGA,aAAa;MAClC,IAAI,CAACC,MAAM,GAAGA,MAAM;MACpB,IAAI,CAACC,MAAM,GAAGA,MAAM;MACpB,IAAI,CAACE,OAAO,GAAGA,OAAO;MACtB,IAAI,CAACC,WAAW,GAAGA,WAAW;MAC9B,IAAI,CAACC,YAAY,GAAGA,YAAY;MAChC,IAAI,CAACC,MAAM,GAAGA,MAAM;;IACrB,OAAAlQ,gCAAA,CAAA0P,aAAA;MAAArb,GAAA;MAAAhB,KAAA,EAED,SAAO8c,OAAOA,CACZC,SAAiB,EAAAjc,KAAA,EAEa;QAAA,IAAAM,KAAA;UAAA8N,KAAA;QAAA,IAD5BsN,MAAM,GAAA1b,KAAA,CAAN0b,MAAM;UAAEI,YAAY,GAAA9b,KAAA,CAAZ8b,YAAY;UAAEI,aAAa,GAAAlc,KAAA,CAAbkc,aAAa;UAAEH,MAAM,GAAA/b,KAAA,CAAN+b,MAAM;UAAKI,MAAM,GAAArW,4CAAA,CAAA9F,KAAA,EAAA+F,SAAA;QAExD,IAAIqW,WAAW,GAAG,CAAC;QACnB,IAAMC,YAAY,GAAG,IAAIC,eAAe,CACtCH,MAAM,IACJvc,MAAM,CAACkC,IAAI,CAACqa,MAAM,CAAC,CAChBxe,GAAG,CAAC,UAAC4e,CAAC;UAAA,OAAAnX,mCAAA,KACJmX,CAAC,EACAC,2BAAA,CAAOL,MAAM,CAACI,CAAC,CAAC,MAAK,QAAQ,GACzBE,IAAI,CAACC,SAAS,CAACP,MAAM,CAACI,CAAC,CAAC,CAAC,GACzBJ,MAAM,CAACI,CAAC,CAAC;SACf,CAAC,CACF9T,MAAM,CAAC,UAACoK,CAAC,EAAEe,CAAC;UAAA,OAAAlX,eAAA,CAAAA,eAAA,KAAWmW,CAAC,GAAKe,CAAC;SAAG,EAAE,EAAE,CAC5C,CAAC;QAED,IAAI+I,GAAG,MAAA5a,MAAA,CAAM,IAAI,CAAC0Z,MAAM,OAAA1Z,MAAA,CAAIka,SAAS,EAAAla,MAAA,CACnCsa,YAAY,CAACrO,QAAQ,EAAE,CAAC/O,MAAM,OAAA8C,MAAA,CAAOsa,YAAY,IAAK,EAAE,CACxD;QAEF,IAAMO,aAAa,IAAAtc,KAAA,GACjBob,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI,IAAI,CAACA,MAAM,cAAApb,KAAA,cAAAA,KAAA,GAAKqc,GAAG,CAAC1d,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,MAAO;QAC/D,IAAI2d,aAAa,KAAK,MAAM,EAAE;UAC5BD,GAAG,MAAA5a,MAAA,CAAM,IAAI,CAAC0Z,MAAM,OAAA1Z,MAAA,CAAIka,SAAS,CAAE;UACnC,IAAI,CAACL,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB;;QAGnD,IAAMiB,qBAAqB,GAAGf,YAAY,aAAZA,YAAY,cAAZA,YAAY,GAAI,IAAI,CAACA,YAAY;QAC/D,IAAMgB,YAAY,GAChBf,MAAM,IACN,IAAI,CAACA,MAAM,KACVc,qBAAqB,GAClBE,WAAW,CAACC,OAAO,CAACH,qBAAqB,CAAC,GAC1C7f,SAAS,CAAC;;;;QAIhB,IAAMigB,UAAU,GAAG,SAAbA,UAAUA;UAAA,OAASC,yBAAK,CAACP,GAAG,EAAE;YAClCjB,MAAM,EAAEkB,aAAa;YACrBhB,OAAO,EAAAlf,eAAA;cACLygB,aAAa,EAAE/O,KAAI,CAACoN,aAAa;cACjC,cAAc,EACZU,aAAa,OAAAna,MAAA,CAAOma,aAAa,YAAAna,MAAA,CAASqa,WAAW,EAAE;eACtDhO,KAAI,CAACwN,OAAO,CACD;YAChBC,WAAW,EAAEzN,KAAI,CAACyN,WAAW;YAC7BrC,IAAI,EAAEoD,aAAa,KAAK,MAAM,GAAGH,IAAI,CAACC,SAAS,CAACP,MAAM,CAAC,GAAG,IAAI;YAC9DJ,MAAM,EAAEe;WACT,CAAC;;QAEF,OAAO;6CAECM,SAAS,WAATA,SAASA,CAACC,QAAQ,EAAE;YAAA,IAAApN,MAAA;YAAA,OAAAqN,qCAAA,cAAAjE,uCAAA,CAAAC,IAAA,UAAAC;cAAA,IAAAnR,MAAA,EAAAmV,YAAA,EAAAC,oBAAA,EAAAC,OAAA,EAAAtD,EAAA;cAAA,OAAAd,uCAAA,CAAAe,IAAA,WAAAC,QAAA;gBAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;kBAAA;oBAAAF,QAAA,CAAAC,IAAA;oBAAAD,QAAA,CAAAE,IAAA;oBAAA,OAED0C,UAAU,EAAE;kBAAA;oBAA3B7U,MAAM,GAAAiS,QAAA,CAAAM,IAAA;oBAAA,OAAAN,QAAA,CAAAO,MAAA,WACLyC,QAAQ,CAACjV,MAAM,EAAE;sBAAA,OAAM6H,MAAI,CAACmN,SAAS,CAACC,QAAQ,CAAC;sBAAC;kBAAA;oBAAAhD,QAAA,CAAAC,IAAA;oBAAAH,EAAA,GAAAE,QAAA;oBAEnDkD,YAAY,GAAG,eAAe;oBAElC,IAAIpD,EAAA,CAAEvd,IAAI,KAAK,YAAY,EAAE;sBAC3B,IACE,CAAAkgB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEY,MAAM,MAAK,cAAc,IACvC,CAAAZ,YAAY,aAAZA,YAAY,gBAAAU,oBAAA,GAAZV,YAAY,CAAEY,MAAM,cAAAF,oBAAA,uBAApBA,oBAAA,CAAsB5gB,IAAI,MAAK,cAAc,EAC7C;wBACA2gB,YAAY,GAAG,SAAS;uBACzB,MAAM;wBACLA,YAAY,GAAG,SAAS;;;oBAItBnV,OAAqB,GAAG;sBAAEoQ,KAAK,EAAE+E;qBAAc;oBAAA,OAAAlD,QAAA,CAAAO,MAAA,WAC9CyC,QAAQ,CAACjV,OAAM,EAAE;sBAAA,OAAM6H,MAAI,CAACmN,SAAS,CAACC,QAAQ,CAAC;sBAAC;kBAAA;kBAAA;oBAAA,OAAAhD,QAAA,CAAAiB,IAAA;;iBAAA/B,OAAA;;;SAG5D;;;MACFrZ,GAAA;MAAAhB,KAAA,EAED,SAAOye,aAAaA,CAClB1B,SAAiB,EAAA5O,KAAA,EAES;QAAA,IAAA/G,KAAA;UAAA4L,MAAA;QAAA,IADxBwJ,MAAM,GAAArO,KAAA,CAANqO,MAAM;UAAEI,YAAY,GAAAzO,KAAA,CAAZyO,YAAY;UAAEI,aAAa,GAAA7O,KAAA,CAAb6O,aAAa;UAAEH,MAAM,GAAA1O,KAAA,CAAN0O,MAAM;UAAEI,MAAM,GAAA9O,KAAA,CAAN8O,MAAM;QAErD,IAAMyB,eAAuC,GAAG,EAAE;;;QAGlD,IAAIzB,MAAM,EAAE;UACVvc,MAAM,CAACkC,IAAI,CAACqa,MAAM,CAAC,CAACrc,OAAO,CAAC,UAACyc,CAAC,EAAK;YACjC,IAAMrd,KAAK,GAAGid,MAAM,CAACI,CAAC,CAAC;YACvB,IAAIrd,KAAK,KAAKlC,SAAS,EAAE;cACvB4gB,eAAe,CAACrB,CAAC,CAAC,GAAGC,2BAAA,CAAOtd,KAAK,MAAK,QAAQ,GAAGud,IAAI,CAACC,SAAS,CAACxd,KAAK,CAAC,GAAG2e,MAAM,CAAC3e,KAAK,CAAC;;WAEzF,CAAC;;QAGJ,IAAMmd,YAAY,GAAG,IAAIC,eAAe,CAACsB,eAAe,CAAC;QAEzD,IAAIjB,GAAG,MAAA5a,MAAA,CAAM,IAAI,CAAC0Z,MAAM,OAAA1Z,MAAA,CAAIka,SAAS,EAAAla,MAAA,CACnCsa,YAAY,CAACrO,QAAQ,EAAE,CAAC/O,MAAM,OAAA8C,MAAA,CAAOsa,YAAY,IAAK,EAAE,CACxD;QAEF,IAAMO,aAAa,IAAAtW,KAAA,GAAGoV,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI,IAAI,CAACA,MAAM,cAAApV,KAAA,cAAAA,KAAA,GAAI,MAAM;QACrD,IAAIsW,aAAa,KAAK,MAAM,EAAE;UAC5BD,GAAG,MAAA5a,MAAA,CAAM,IAAI,CAAC0Z,MAAM,OAAA1Z,MAAA,CAAIka,SAAS,CAAE;UACnC,IAAI,CAACL,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB;;QAGnD,IAAMiB,qBAAqB,GAAGf,YAAY,aAAZA,YAAY,cAAZA,YAAY,GAAI,IAAI,CAACA,YAAY;QAE/D,IAAIgC,UAAuC;QAC3C,IAAIhB,YAAqC,GAAGf,MAAM,IAAI,IAAI,CAACA,MAAM;QAEjE,IAAI,CAACe,YAAY,IAAID,qBAAqB,EAAE;UAC1CiB,UAAU,GAAG,IAAIC,eAAe,EAAE;UAClCjB,YAAY,GAAGgB,UAAU,CAAC/B,MAAM;UAChCiC,UAAU,CAAC;YAAA,IAAAC,WAAA;YAAA,QAAAA,WAAA,GAAMH,UAAU,cAAAG,WAAA,uBAAVA,WAAA,CAAYC,KAAK,EAAE;aAAErB,qBAAqB,CAAC;;QAG9D,OAAO;UACLsB,MAAM;YAAA,IAAAC,OAAA,GAAAd,qCAAA,cAAAjE,uCAAA,CAAAC,IAAA,CAAE,SAAA+E;cAAA,IAAAC,QAAA;cAAA,OAAAjF,uCAAA,CAAAe,IAAA,WAAAmE,SAAA;gBAAA,kBAAAA,SAAA,CAAAjE,IAAA,GAAAiE,SAAA,CAAAhE,IAAA;kBAAA;oBAAAgE,SAAA,CAAAhE,IAAA;oBAAA,OACiB2C,yBAAK,CAACP,GAAG,EAAE;sBAChCjB,MAAM,EAAEkB,aAAa;sBACrBhB,OAAO,EAAAlf,eAAA;wBACLygB,aAAa,EAAEjL,MAAI,CAACsJ,aAAa;wBACjC,cAAc,EAAEU,aAAa,IAAI;yBAC9BhK,MAAI,CAAC0J,OAAO,CACD;sBAChBC,WAAW,EAAE3J,MAAI,CAAC2J,WAAW;sBAC7BrC,IAAI,EAAEoD,aAAa,KAAK,MAAM,GAAGH,IAAI,CAACC,SAAS,CAACP,MAAM,IAAI,EAAE,CAAC,GAAG,IAAI;sBACpEJ,MAAM,EAAEe;qBACT,CAAC;kBAAA;oBAVIwB,QAAQ,GAAAC,SAAA,CAAA5D,IAAA;oBAAA,IAYT2D,QAAQ,CAACE,EAAE;sBAAAD,SAAA,CAAAhE,IAAA;sBAAA;;oBAAA,MACR,IAAI7O,KAAK,SAAA3J,MAAA,CAASuc,QAAQ,CAACG,MAAM,QAAA1c,MAAA,CAAKuc,QAAQ,CAACI,UAAU,CAAE,CAAC;kBAAA;oBAAA,IAG/DJ,QAAQ,CAAC9E,IAAI;sBAAA+E,SAAA,CAAAhE,IAAA;sBAAA;;oBAAA,MACV,IAAI7O,KAAK,CAAC,0CAA0C,CAAC;kBAAA;oBAAA,OAAA6S,SAAA,CAAA3D,MAAA,WAGtD3B,cAAc,CAACqF,QAAQ,CAAC;kBAAA;kBAAA;oBAAA,OAAAC,SAAA,CAAAjD,IAAA;;iBAAA+C,QAAA;aAChC;YAAA,SAtBDF,MAAMA;cAAA,OAAAC,OAAA,CAAAhhB,KAAA,OAAAC,SAAA;;YAAA,OAAN8gB,MAAM;aAsBL;UACDQ,WAAW;YAAA,IAAAC,YAAA,GAAAtB,qCAAA,cAAAjE,uCAAA,CAAAC,IAAA,CAAE,SAAAuF;cAAA,OAAAxF,uCAAA,CAAAe,IAAA,WAAA0E,SAAA;gBAAA,kBAAAA,SAAA,CAAAxE,IAAA,GAAAwE,SAAA,CAAAvE,IAAA;kBAAA;oBACX,IAAIuD,UAAU,EAAE;sBACdA,UAAU,CAACI,KAAK,EAAE;;kBACnB;kBAAA;oBAAA,OAAAY,SAAA,CAAAxD,IAAA;;iBAAAuD,QAAA;aACF;YAAA,SAJDF,WAAWA;cAAA,OAAAC,YAAA,CAAAxhB,KAAA,OAAAC,SAAA;;YAAA,OAAXshB,WAAW;;SAKZ;;;EACF;;;;MC9PkBI,YAAY,0BAAAC,MAAA;IAK/B,SAAAD,aAAmBE,OAAe,EAAEX,QAAa,EAAEG,MAAc,EAAE;MAAA,IAAArQ,KAAA;MAAA9C,mCAAA,OAAAyT,YAAA;MACjE3Q,KAAA,GAAA8Q,UAAA,OAAAH,YAAA,GAAME,OAAO;MAAE7Z,mCAAA,CAAAgJ,KAAA;MAAAhJ,mCAAA,CAAAgJ,KAAA;MACfA,KAAA,CAAKkQ,QAAQ,GAAGA,QAAQ;MACxBlQ,KAAA,CAAKqQ,MAAM,GAAGA,MAAM;MAAC,OAAArQ,KAAA;;IACtB+Q,6BAAA,CAAAJ,YAAA,EAAAC,MAAA;IAAA,OAAAnT,gCAAA,CAAAkT,YAAA;EAAA,eAAAK,oCAAA,CATuC1T,KAAK;;;;;;;;;;ECoE/C;;EAuBA;EACA;EACA;;EAyDA,IAAI2T,YAAY,GAAG,CAAC;EAEpB,IAAMC,WAAW,GAAG,wBAAwB;EAE5C,SAASC,YAAYA,CAACC,OAAqB,EAAE;IAC3C,OAAOA,OAAO,CACXC,IAAI,CAAC,UAACrX,MAAM;MAAA,OAAKA,MAAM;MAAC,SACnB,CAAC,UAACoQ,KAAK,EAAK;MAChB,IAAIA,KAAK,KAAK8G,WAAW,EAAE;QACzB,MAAM9G,KAAK;;KAEd,CAAC;EACN;EAkCA;EACA;EACA;EAFA,IAGMkH,OAAO;;EA4Bb;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;IACE,SAAAA,QACEC,QAAuE,EACvEha,OAAwB,EACxB;MAAA2F,mCAAA,OAAAoU,OAAA;MAAAta,mCAAA;MAAAA,mCAAA;MAAAA,mCAAA;MAAAA,mCAAA;MAAAA,mCAAA;MAAAA,mCAAA;MAAAA,mCAAA;MAAAA,mCAAA;MAAAA,mCAAA;MAAAA,mCAAA;MAAAA,mCAAA;MACA,IAAIua,QAAQ,IAAI,CAACvb,KAAK,CAACC,OAAO,CAACsb,QAAQ,CAAC,IAAInD,2BAAA,CAAOmD,QAAQ,MAAK,QAAQ,EAAE;QACxEha,OAAO,GAAGga,QAAQ;QAClBA,QAAQ,GAAG3iB,SAAS;;MAGtB,IAAI,CAAC2I,OAAO,IAAK,CAACA,OAAO,CAACia,SAAS,IAAI,CAACja,OAAO,CAAC8V,MAAO,EAAE;QACvD,MAAM,IAAI/P,KAAK,CAAC,iCAAiC,CAAC;;MAGpD,IAAI,CAACiU,QAAQ,GAAGA,QAAQ;MACxB,IAAI,CAAClE,MAAM,GAAG9V,OAAO,CAAC8V,MAAM;MAC5B,IAAI,CAACC,MAAM,GAAG/V,OAAO,CAAC+V,MAAM;MAC5B,IAAI,CAACE,OAAO,GAAGjW,OAAO,CAACiW,OAAO,IAAI,EAAE;MACpC,IAAI,CAACC,WAAW,GAAGlW,OAAO,CAACkW,WAAW;MAEtC,IAAI,CAAC+D,SAAS,GAAGja,OAAO,CAACia,SAAS,IAAI,IAAIrE,aAAa,CAAC;QACtDC,aAAa,EAAE,OAAOmE,QAAQ,KAAK,QAAQ,GAAGA,QAAQ,GAAG3iB,SAAS;QAClEye,MAAM,EAAE,IAAI,CAACA,MAAM;QACnBC,MAAM,EAAE,IAAI,CAACA,MAAM;QACnBE,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,WAAW,EAAE,IAAI,CAACA,WAAW;QAC7BC,YAAY,EAAEnW,OAAO,CAACmW,YAAY;QAClCC,MAAM,EAAEpW,OAAO,CAACoW;OACjB,CAAC;MAEF,IAAI,CAAC8D,YAAY,GAAGla,OAAO,CAACka,YAAY,IAAI,CAAC;MAC7C,IAAI,CAAClU,iBAAiB,GAAGhG,OAAO,CAACgG,iBAAiB;MAClD,IAAI,CAACmU,YAAY,GAAG,OAAOna,OAAO,CAACma,YAAY,KAAK,SAAS,GAAGna,OAAO,CAACma,YAAY,GAAG,KAAK;MAC5F,IAAI,CAACC,mBAAmB,GAAGpa,OAAO,CAACoa,mBAAmB,IAAI,CAAC;MAE3D,IAAI,CAACC,0BAA0B,GAAG,IAAI;;IACvC,OAAAnU,gCAAA,CAAA6T,OAAA;MAAAxf,GAAA;MAAAhB,KAAA,EAED,SAAU8c,OAAOA,CAACN,MAAc,EAAES,MAAY,EAAE;QAC9C,OAAO,IAAI,CAACyD,SAAS,CAAC5D,OAAO,CAACN,MAAM,EAAAhf,aAAA,CAAAA,aAAA,KAC/Byf,MAAM;UACTD,aAAa,EAAE,CAAAC,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAED,aAAa,KAAI+D,OAAM;UAC/C,CAAC;;;MACH/f,GAAA;MAAAhB,KAAA,EAED,SAAQghB,UAAUA,CAAClE,OAAyB,EAAEmE,QAA0B,EAAExa,OAA2B,EAAE0X,QAA2B,EAAE;QAAA,IAAApN,MAAA;QAClI,IAAMmQ,UAAU,GAAG,EAAEf,YAAY;QACjC,IAAI,OAAO1Z,OAAO,KAAK,UAAU,IAAI,CAAC0X,QAAQ,EAAE;UAC9CA,QAAQ,GAAG1X,OAAO;UAClBA,OAAO,GAAG3I,SAAS;;QAGrB2I,OAAO,GAAGA,OAAO,IAAI,EAAE;QAEvB,IAAM0a,QAAQ,GAAG1a,OAAO,CAAC0a,QAAQ,IAAI,SAAS;QAC9C,IAAI1a,OAAO,CAAC2a,QAAQ,EAAE;UACpB3a,OAAO,CAAC2a,QAAQ,CAACD,QAAQ,CAAC,GAAGD,UAAU;;QAGzC,IAAMG,cAAc,GAAG,IAAI,CACxBC,4BAA4B,EAAE,CAC9Bf,IAAI,CAAC;UAAA,OAAMzD,OAAO,EAAE;UAAC;QAExB,IAAIyE,uBAAuB,GAAG,IAAI;QAClC,IAAIC,YAAY,GAAG,KAAK;QAExB,IAAMC,UAAU;UAAA,IAAA5gB,IAAA,GAAAud,qCAAA,cAAAjE,uCAAA,CAAAC,IAAA,CAAG,SAAAC;YAAA,IAAAqH,eAAA;YAAA,OAAAvH,uCAAA,CAAAe,IAAA,WAAAC,QAAA;cAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;gBAAA;kBAAAF,QAAA,CAAAE,IAAA;kBAAA,OACagG,cAAc;gBAAA;kBAAtCK,eAAe,GAAAvG,QAAA,CAAAM,IAAA;kBAAA,MAEjBhV,OAAO,IACTA,OAAO,CAAC2a,QAAQ,IACd3a,OAAO,CAAC2a,QAAQ,CAACD,QAAQ,CAAC,KAAKD,UAAU;oBAAA/F,QAAA,CAAAE,IAAA;oBAAA;;kBAE3CmG,YAAY,GAAG,IAAI;kBAAC,KAChBE,eAAe,CAACjC,WAAW;oBAAAtE,QAAA,CAAAE,IAAA;oBAAA;;kBAAAF,QAAA,CAAAE,IAAA;kBAAA,OACvBqG,eAAe,CAACjC,WAAW,EAAE;gBAAA;kBAAA,MAE/BW,WAAW;gBAAA;gBAAA;kBAAA,OAAAjF,QAAA,CAAAiB,IAAA;;eAAA/B,OAAA;WAEpB;UAAA,gBAbKoH,UAAUA;YAAA,OAAA5gB,IAAA,CAAA3C,KAAA,OAAAC,SAAA;;WAaf;QAED,IAAIwjB,cAAc,GAAG,IAAI,CAACd,mBAAmB;QAE7C,IAAMe,QAAQ;UAAA,IAAA9gB,KAAA,GAAAsd,qCAAA,cAAAjE,uCAAA,CAAAC,IAAA,CAAG,SAAAyH,SAAOzC,QAAkC,EAAE/D,IAAsB;YAAA,IAAAyG,SAAA,EAAAC,eAAA,EAAAC,SAAA;gBAAAN,eAAA,EAAAO,aAAA,EAAAC,YAAA,EAAA5H,IAAA,EAAA6H,IAAA,EAAAC,SAAA,EAAAC,SAAA,EAAAC,MAAA,EAAApZ,MAAA;YAAA,OAAAiR,uCAAA,CAAAe,IAAA,WAAAqH,SAAA;cAAA,kBAAAA,SAAA,CAAAnH,IAAA,GAAAmH,SAAA,CAAAlH,IAAA;gBAAA;kBAAAkH,SAAA,CAAAlH,IAAA;kBAAA,OAClDgG,cAAc;gBAAA;kBAAtCK,eAAe,GAAAa,SAAA,CAAA9G,IAAA;kBAEfwG,aAAa;oBAAA,IAAA9gB,KAAA,GAAAid,qCAAA,cAAAjE,uCAAA,CAAAC,IAAA,CAAG,SAAA+E;sBAAA,IAAAqD,QAAA;sBAAA,OAAArI,uCAAA,CAAAe,IAAA,WAAAmE,SAAA;wBAAA,kBAAAA,SAAA,CAAAjE,IAAA,GAAAiE,SAAA,CAAAhE,IAAA;0BAAA;4BAAA,MAChB,CAAAmH,QAAA,GAAA/b,OAAO,cAAA+b,QAAA,eAAPA,QAAA,CAAStE,SAAS,IAAI,CAACsD,YAAY;8BAAAnC,SAAA,CAAAhE,IAAA;8BAAA;;4BAAA,KACjCqG,eAAe,CAACjC,WAAW;8BAAAJ,SAAA,CAAAhE,IAAA;8BAAA;;4BAAA,OAAAgE,SAAA,CAAA3D,MAAA,WACtBL,IAAI,EAAE;0BAAA;4BAAAgE,SAAA,CAAAhE,IAAA;4BAAA,OAEP,IAAIoH,OAAO,CAAO,UAAAC,OAAO;8BAAA,OAAI5D,UAAU,CAAC;gCAAA,OAAM4D,OAAO,EAAE;iCAAE3R,MAAI,CAAC4P,YAAY,GAAG,IAAI,CAAC;8BAAC;0BAAA;4BAAA,OAAAtB,SAAA,CAAA3D,MAAA,WAClFL,IAAI,EAAE;0BAAA;4BAAA,OAAAgE,SAAA,CAAA3D,MAAA,WAGV,IAAI;0BAAA;0BAAA;4BAAA,OAAA2D,SAAA,CAAAjD,IAAA;;yBAAA+C,QAAA;qBACZ;oBAAA,gBAVK8C,aAAaA;sBAAA,OAAA9gB,KAAA,CAAAjD,KAAA,OAAAC,SAAA;;;kBAYb+jB,YAAY;oBAAA,IAAA9gB,KAAA,GAAAgd,qCAAA,cAAAjE,uCAAA,CAAAC,IAAA,CAAG,SAAAuF;sBAAA,IAAAgD,IAAA;wBAAAC,MAAA,GAAAzkB,SAAA;sBAAA,OAAAgc,uCAAA,CAAAe,IAAA,WAAA0E,SAAA;wBAAA,kBAAAA,SAAA,CAAAxE,IAAA,GAAAwE,SAAA,CAAAvE,IAAA;0BAAA;4BAAOsH,IAAa,GAAAC,MAAA,CAAA7iB,MAAA,QAAA6iB,MAAA,QAAA9kB,SAAA,GAAA8kB,MAAA,MAAG,KAAK;4BAAA,IAC1CpB,YAAY;8BAAA5B,SAAA,CAAAvE,IAAA;8BAAA;;4BAAA,KACXsH,IAAI;8BAAA/C,SAAA,CAAAvE,IAAA;8BAAA;;4BAAAuE,SAAA,CAAAvE,IAAA;4BAAA,OACA,IAAIoH,OAAO,CAAO,UAAAC,OAAO;8BAAA,OAAI5D,UAAU,CAAC;gCAAA,OAAM4D,OAAO,EAAE;iCAAE3R,MAAI,CAAC4P,YAAY,GAAG,IAAI,CAAC;8BAAC;0BAAA;4BAAA,OAAAf,SAAA,CAAAlE,MAAA,WAEpFL,IAAI,EAAE;0BAAA;4BAAA,OAAAuE,SAAA,CAAAlE,MAAA,WAER,IAAI;0BAAA;0BAAA;4BAAA,OAAAkE,SAAA,CAAAxD,IAAA;;yBAAAuD,QAAA;qBACZ;oBAAA,gBARKuC,YAAYA;sBAAA,OAAA9gB,KAAA,CAAAlD,KAAA,OAAAC,SAAA;;;kBAAA,MAUd,CAAA2jB,SAAA,GAAArb,OAAO,cAAAqb,SAAA,eAAPA,SAAA,CAAS5D,SAAS,IAAI,CAACqD,uBAAuB;oBAAAgB,SAAA,CAAAlH,IAAA;oBAAA;;kBAAAkH,SAAA,CAAAlH,IAAA;kBAAA,OAC1CtK,MAAI,CAACuQ,4BAA4B,EAAE;gBAAA;kBAG3CC,uBAAuB,GAAG,KAAK;kBAAC,MAE3B,QAAQ,IAAInC,QAAQ,IAAIA,QAAQ,CAACG,MAAM,KAAK,GAAG,IACjD,OAAO,IAAIH,QAAQ,IAAI,EAAA2C,eAAA,GAAA3C,QAAQ,CAAC9F,KAAK,cAAAyI,eAAA,uBAAdA,eAAA,CAAgBc,WAAW,EAAE,MAAK,eAAe,IACzE,EAAElB,cAAc,IAAI,CAAC;oBAAAY,SAAA,CAAAlH,IAAA;oBAAA;;kBAAAkH,SAAA,CAAAlH,IAAA;kBAAA,OAEfoG,UAAU,EAAE;gBAAA;kBAAA,OAAAc,SAAA,CAAA7G,MAAA,WACXwG,YAAY,CAAC,IAAI,CAAC;gBAAA;;kBAI3B9C,QAAQ,GAAIA,QAAqB;kBAC7B9E,IAAkB,GAAG,EAAE;kBACvB6H,IAAI,GAAG,EAAE;kBAAAI,SAAA,CAAAnH,IAAA;kBAAAmH,SAAA,CAAAlH,IAAA;kBAAA,OAEE+D,QAAQ,CAAC+C,IAAI,EAAE;gBAAA;kBAA5BA,IAAI,GAAAI,SAAA,CAAA9G,IAAA;kBACJnB,IAAI,GAAGiD,IAAI,CAACuF,KAAK,CAACX,IAAI,CAAC;kBAACI,SAAA,CAAAlH,IAAA;kBAAA;gBAAA;kBAAAkH,SAAA,CAAAnH,IAAA;kBAAAmH,SAAA;kBAExBjI,IAAI,CAAChB,KAAK,GAAG6I,IAAI;gBAAC;kBAAA,MAGhB7H,IAAI,CAAChB,KAAK,KAAK,eAAe;oBAAAiJ,SAAA,CAAAlH,IAAA;oBAAA;;kBAAAkH,SAAA,CAAAlH,IAAA;kBAAA,OAC1BoG,UAAU,EAAE;gBAAA;kBAClB,KAAAW,SAAA,GAAI3b,OAAO,cAAA2b,SAAA,eAAPA,SAAA,CAASW,gBAAgB,EAAE;oBAC7Btc,OAAO,CAACsc,gBAAgB,CAAC,IAAIpJ,cAAc,CAACW,IAAwB,CAAC,CAAC;;kBACvE,OAAAiI,SAAA,CAAA7G,MAAA,WACMwG,YAAY,EAAE;gBAAA;kBAAA,MAGnB9C,QAAQ,CAACG,MAAM,KAAK,GAAG;oBAAAgD,SAAA,CAAAlH,IAAA;oBAAA;;kBAAAkH,SAAA,CAAAlH,IAAA;kBAAA,OACnBoG,UAAU,EAAE;gBAAA;kBAAA,MACd,GAAAY,SAAA,GAAC5b,OAAO,cAAA4b,SAAA,eAAPA,SAAA,CAASnE,SAAS,KAAIwD,eAAe,CAACjC,WAAW;oBAAA8C,SAAA,CAAAlH,IAAA;oBAAA;;kBAAAkH,SAAA,CAAAlH,IAAA;kBAAA,OAC9CqG,eAAe,CAACjC,WAAW,EAAE;gBAAA;kBAG/BnG,MAAK,GAAG,IAAIuG,YAAY,CAACvF,IAAI,CAAChB,KAAK,IAAK8F,QAAQ,CAAS9F,KAAK,IAAI,EAAE,EAAEgB,IAAI,EAAE8E,QAAQ,CAACG,MAAM,CAAC;kBAAA,KAC9FpB,QAAQ;oBAAAoE,SAAA,CAAAlH,IAAA;oBAAA;;kBACV8C,QAAQ,CAAC7E,MAAK,CAAC;kBAACiJ,SAAA,CAAAlH,IAAA;kBAAA;gBAAA;kBAAA,MAEV/B,MAAK;gBAAA;kBAAA,OAAAiJ,SAAA,CAAA7G,MAAA,WAGNuG,aAAa,EAAE;gBAAA;kBAAAM,SAAA,CAAAlH,IAAA;kBAAA,OAElBoG,UAAU,EAAE;gBAAA;kBAAA,MACd,GAAAO,SAAA,GAACvb,OAAO,cAAAub,SAAA,eAAPA,SAAA,CAAS9D,SAAS,KAAIwD,eAAe,CAACjC,WAAW;oBAAA8C,SAAA,CAAAlH,IAAA;oBAAA;;kBAAAkH,SAAA,CAAAlH,IAAA;kBAAA,OAC9CqG,eAAe,CAACjC,WAAW,EAAE;gBAAA;kBAE/BvW,MAAM,GAAG+X,QAAQ,CAAC3G,IAAI,CAAC;kBAAA,KACzB6D,QAAQ;oBAAAoE,SAAA,CAAAlH,IAAA;oBAAA;;kBACV8C,QAAQ,CAAC,IAAI,EAAEjV,MAAM,CAAC;kBAACqZ,SAAA,CAAAlH,IAAA;kBAAA;gBAAA;kBAAA,OAAAkH,SAAA,CAAA7G,MAAA,WAEhBxS,MAAM;gBAAA;kBAAA,OAAAqZ,SAAA,CAAA7G,MAAA,WAGRuG,aAAa,EAAE;gBAAA;gBAAA;kBAAA,OAAAM,SAAA,CAAAnG,IAAA;;eAAAyF,QAAA;WACvB;UAAA,gBArFKD,QAAQA,CAAA5H,EAAA,EAAAgJ,GAAA;YAAA,OAAAliB,KAAA,CAAA5C,KAAA,OAAAC,SAAA;;WAqFb;QAED,IAAMmiB,OAAO,GAAGe,cAAc,CAACd,IAAI,CAAC,UAAAmB,eAAe;UAAA,OAAIrB,YAAY,CAACqB,eAAe,CAACxD,SAAS,CAAC0D,QAAQ,CAAC,CAAC;UAAC;QAEzG,IAAIzD,QAAQ,EAAE;UACZ,OAAO;YACLsB,WAAW;cAAA,IAAAC,YAAA,GAAAtB,qCAAA,cAAAjE,uCAAA,CAAAC,IAAA,CAAE,SAAA6I;gBAAA,IAAAvB,eAAA;gBAAA,OAAAvH,uCAAA,CAAAe,IAAA,WAAAgI,SAAA;kBAAA,kBAAAA,SAAA,CAAA9H,IAAA,GAAA8H,SAAA,CAAA7H,IAAA;oBAAA;sBAAA6H,SAAA,CAAA7H,IAAA;sBAAA,OACmBgG,cAAc;oBAAA;sBAAtCK,eAAe,GAAAwB,SAAA,CAAAzH,IAAA;sBAErB+F,YAAY,GAAG,IAAI;sBAAC,KAChBE,eAAe,CAACjC,WAAW;wBAAAyD,SAAA,CAAA7H,IAAA;wBAAA;;sBAAA,OAAA6H,SAAA,CAAAxH,MAAA,WACtBgG,eAAe,CAACjC,WAAW,EAAE;oBAAA;sBAAA,OAAAyD,SAAA,CAAAxH,MAAA,WAE/B,IAAI;oBAAA;oBAAA;sBAAA,OAAAwH,SAAA,CAAA9G,IAAA;;mBAAA6G,QAAA;eACZ;cAAA,SARDxD,WAAWA;gBAAA,OAAAC,YAAA,CAAAxhB,KAAA,OAAAC,SAAA;;cAAA,OAAXshB,WAAW;;WASZ;SACF,MAAM;UACL,OAAOa,OAAO;;;;MAEjBtf,GAAA;MAAAhB,KAAA;QAAA,IAAAmjB,6BAAA,GAAA/E,qCAAA,cAAAjE,uCAAA,CAAAC,IAAA,CAED,SAAAgJ;UAAA,IAAApQ,MAAA;UAAA,IAAAqQ,YAAA,EAAA/C,OAAA;UAAA,OAAAnG,uCAAA,CAAAe,IAAA,WAAAoI,SAAA;YAAA,kBAAAA,SAAA,CAAAlI,IAAA,GAAAkI,SAAA,CAAAjI,IAAA;cAAA;gBAAA,KACM,IAAI,CAACyF,0BAA0B;kBAAAwC,SAAA,CAAAjI,IAAA;kBAAA;;gBAAAiI,SAAA,CAAAjI,IAAA;gBAAA,OAC3B,IAAI,CAACyF,0BAA0B;cAAA;gBAAA,OAAAwC,SAAA,CAAA5H,MAAA;cAAA;gBAIjC2H,YAAY,GAAG,IAAI,CAAC5C,QAAQ;gBAAA,MAE9B,OAAO4C,YAAY,KAAK,UAAU;kBAAAC,SAAA,CAAAjI,IAAA;kBAAA;;gBAC9BiF,OAAO,GAAGlC,qCAAA,cAAAjE,uCAAA,CAAAC,IAAA,CAAC,SAAAmJ;kBAAA,IAAAC,KAAA;kBAAA,OAAArJ,uCAAA,CAAAe,IAAA,WAAAuI,SAAA;oBAAA,kBAAAA,SAAA,CAAArI,IAAA,GAAAqI,SAAA,CAAApI,IAAA;sBAAA;wBAAAoI,SAAA,CAAArI,IAAA;wBAAAqI,SAAA,CAAApI,IAAA;wBAAA,OAEOgI,YAAY,EAAE;sBAAA;wBAA5BG,KAAK,GAAAC,SAAA,CAAAhI,IAAA;wBAEX,IAAIzI,MAAI,CAAC0N,SAAS,CAACpE,aAAa,KAAKkH,KAAK,EAAE;0BAC1CxQ,MAAI,CAAC0N,SAAS,CAACpE,aAAa,GAAGkH,KAAK;;sBACrC;wBAAAC,SAAA,CAAArI,IAAA;wBAEDpI,MAAI,CAAC8N,0BAA0B,GAAG,IAAI;wBAAC,OAAA2C,SAAA,CAAA5H,MAAA;sBAAA;sBAAA;wBAAA,OAAA4H,SAAA,CAAArH,IAAA;;qBAAAmH,QAAA;iBAE1C,IAAG;gBAEJ,IAAI,CAACzC,0BAA0B,GAAGR,OAAO;gBAACgD,SAAA,CAAAjI,IAAA;gBAAA,OACpCiF,OAAO;cAAA;cAAA;gBAAA,OAAAgD,SAAA,CAAAlH,IAAA;;aAAAgH,QAAA;SAEhB;QAAA,SAxBa9B,4BAA4BA;UAAA,OAAA6B,6BAAA,CAAAjlB,KAAA,OAAAC,SAAA;;QAAA,OAA5BmjB,4BAA4B;;;EA2B5C;EACA;;MAFEtgB,GAAA;MAAAhB,KAAA,EAGA,SAAQ0jB,kBAAkBA,CAAC7e,KAA4B,EAAE8e,cAA8B,EAAyB;QAC9G,IACEA,cAAc,KAAK,SAAS,IAC5B9e,KAAK,CAAC8e,cAAc,KAAK,SAAS,EAClC;UACA,OAAAnmB,aAAA,CAAAA,aAAA,KACKqH,KAAK;YACR8e,cAAc,EAAE;;SAEnB,MAAM;UACL,OAAO9e,KAAK;;;;;EAKlB;EACA;EACA;;MAHE7D,GAAA;MAAAhB,KAAA,EAIA,SAAU4jB,oBAAoBA,CAACxE,QAA2B,EAA0D;QAAA,IAAxD3Y,OAAiC,GAAAtI,SAAA,CAAA4B,MAAA,QAAA5B,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,EAAE;QAChG,IACEihB,QAAQ,CAAChd,OAAO,CAACrC,MAAM,EACvB;UACA,IAAI0G,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEma,YAAY,EAAE;YACzBxB,QAAQ,CAAChd,OAAO,CAACxB,OAAO,CAAC,UAACsI,MAAM,EAAK;cACnC,IAAM2a,cAAc,GAAGnjB,MAAM,CAACC,OAAO,CAAAnD,aAAA,CAAAA,aAAA,KAChC0L,MAAM,CAAC2E,UAAU,CAACzH,QAAQ,GAC1B8C,MAAM,CAAC2E,UAAU,CAACxH,UAAU,CAChC,CAAC,CAACkD,MAAM,CAAW,UAAC6B,GAAG,EAAAhE,KAAA,EAAa;gBAAA,IAAAC,KAAA,GAAAtG,kCAAA,CAAAqG,KAAA;kBAAViW,CAAC,GAAAhW,KAAA;kBAAE0I,CAAC,GAAA1I,KAAA;gBAC7B,IAAI0I,CAAC,CAAC+E,IAAI,KAAK,QAAQ,EAAE;kBACvB1J,GAAG,CAAC7I,IAAI,CAAC8a,CAAC,CAAC;;gBAEb,OAAOjS,GAAG;eACX,EAAE,EAAE,CAAC;cAENlC,MAAM,CAACoC,IAAI,GAAGpC,MAAM,CAACoC,IAAI,CAAC7M,GAAG,CAAC,UAAC8M,GAAG,EAAK;gBACrCsY,cAAc,CAACjjB,OAAO,CAAC,UAACI,GAAG,EAAK;kBAC9B,IAAIuK,GAAG,CAACvK,GAAG,CAAC,IAAI,IAAI,EAAE;oBACpBuK,GAAG,CAACvK,GAAG,CAAC,GAAGmS,MAAM,CAAC5H,GAAG,CAACvK,GAAG,CAAC,CAAC;;iBAE9B,CAAC;gBAEF,OAAOuK,GAAG;eACX,CAAC;aACH,CAAC;;UAGJ,IAAI6T,QAAQ,CAAChd,OAAO,CAAC,CAAC,CAAC,CAACyC,KAAK,CAAC8e,cAAc,IAC1CvE,QAAQ,CAAChd,OAAO,CAAC,CAAC,CAAC,CAACyC,KAAK,CAAC8e,cAAc,KAAK,SAAS,EAAE;YACxDvE,QAAQ,CAAChd,OAAO,CAACxB,OAAO,CAAC,UAACsI,MAAM,EAAE4a,CAAC,EAAK;cACtC,IAAMxY,IAA2B,GAAG,EAAE;cACtC,IAAA5D,KAAA,GAA6BwB,MAAM,CAACoC,IAAI;gBAAhCyY,OAAO,GAAArc,KAAA,CAAPqc,OAAO;gBAAEna,OAAO,GAAAlC,KAAA,CAAPkC,OAAO;cACxBma,OAAO,CAACnjB,OAAO,CAAC,UAAC2T,CAAC,EAAK;gBACrB,IAAMhJ,GAAwB,GAAG,EAAE;gBACnC3B,OAAO,CAAChJ,OAAO,CAAC,UAACgT,CAAC,EAAE9T,CAAC,EAAK;kBACxByL,GAAG,CAACqI,CAAC,CAAC,GAAGW,CAAC,CAACzU,CAAC,CAAC;iBACd,CAAC;gBACFwL,IAAI,CAAC/I,IAAI,CAACgJ,GAAG,CAAC;eACf,CAAC;cACF6T,QAAQ,CAAChd,OAAO,CAAC0hB,CAAC,CAAC,CAACxY,IAAI,GAAGA,IAAI;aAChC,CAAC;;;QAIN,OAAO,IAAIY,SAAS,CAACkT,QAAQ,EAAE;UAC7B3S,iBAAiB,EAAE,IAAI,CAACA;SACzB,CAAC;;;MACHzL,GAAA;MAAAhB,KAAA;;EAqBH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;MACE,SAAOgkB,IAAIA,CAAoDnf,KAAgB,EAAE4B,OAA2B,EAAE0X,QAA2B,EAA8C;QAAA,IAAAjI,MAAA;QAAA,IAA5CyN,cAA8B,GAAAxlB,SAAA,CAAA4B,MAAA,QAAA5B,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,SAAS;QAAA,IAAA8lB,qBAAA,GAChK,IAAI,CAACC,mBAAmB,CAACrf,KAAK,EAAE4B,OAAO,EAAEkd,cAAc,CAAC;QAAA,IAAAQ,sBAAA,GAAApjB,kCAAA,CAAAkjB,qBAAA;QAA1Epf,KAAK,GAAAsf,sBAAA;QAAE1d,OAAO,GAAA0d,sBAAA;QACf,OAAO,IAAI,CAACnD,UAAU,CACpB;UAAA,IAAAoD,SAAA,EAAAC,SAAA;UAAA,OAAMnO,MAAI,CAAC4G,OAAO,CAAC,MAAM,EAAE;YACzBjY,KAAK,EAALA,KAAK;YACLwH,SAAS,EAAE,OAAO;YAClBwQ,MAAM,GAAAuH,SAAA,GAAE3d,OAAO,cAAA2d,SAAA,uBAAPA,SAAA,CAASvH,MAAM;YACvBG,aAAa,GAAAqH,SAAA,GAAE5d,OAAO,cAAA4d,SAAA,uBAAPA,SAAA,CAASrH;WACzB,CAAC;WACF,UAACoC,QAAa;UAAA,OAAKlJ,MAAI,CAAC0N,oBAAoB,CAACxE,QAAQ,EAAE3Y,OAAO,CAAC;WAC/DA,OAAO,EACP0X,QACF,CAAC;;;MACFnd,GAAA;MAAAhB,KAAA,EAED,SAAQkkB,mBAAmBA,CAAoDrf,KAAgB,EAAE4B,OAAkC,EAA8F;QAAA,IAAAsQ,MAAA;QAAA,IAA5F4M,cAA8B,GAAAxlB,SAAA,CAAA4B,MAAA,QAAA5B,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,SAAS;QAC7KsI,OAAO,GAAAjJ,aAAA;UACLojB,YAAY,EAAE,IAAI,CAACA;WAChBna,OAAO,CACX;QAED,IAAIkd,cAAc,KAAK,SAAS,EAAE;UAChC,IAAIze,KAAK,CAACC,OAAO,CAACN,KAAK,CAAC,EAAE;YACxB,IAAMyf,OAAO,GAAGzf,KAAK,CAACpG,GAAG,CAAC,UAACuJ,CAAC;cAAA,OAAK+O,MAAI,CAAC2M,kBAAkB,CAAC1b,CAAC,EAAE,SAAS,CAAC;cAAC;YACvE,OAAO,CAACsc,OAAO,EAA0B7d,OAAO,CAAC;WAClD,MAAM;YACL,IAAM6d,QAAO,GAAG,IAAI,CAACZ,kBAAkB,CAAC7e,KAAK,EAA2B,SAAS,CAAC;YAClF,OAAO,CAACyf,QAAO,EAAe7d,OAAO,CAAC;;;QAI1C,OAAO,CAAC5B,KAAK,EAAE4B,OAAO,CAAC;;;;EAI3B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;MA3BEzF,GAAA;MAAAhB,KAAA,EA4BA,SAAOke,SAASA,CACdrZ,KAAgB,EAChB4B,OAAiC,EACjC0X,QAAmE,EAEnD;QAAA,IAAAoG,MAAA;QAAA,IADhBZ,cAA8B,GAAAxlB,SAAA,CAAA4B,MAAA,QAAA5B,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,SAAS;QAAA,IAAAqmB,sBAAA,GAEvB,IAAI,CAACN,mBAAmB,CAACrf,KAAK,EAAE4B,OAAO,EAAEkd,cAAc,CAAC;QAAA,IAAAc,sBAAA,GAAA1jB,kCAAA,CAAAyjB,sBAAA;QAA1E3f,KAAK,GAAA4f,sBAAA;QAAEhe,OAAO,GAAAge,sBAAA;QACf,OAAO,IAAI,CAACzD,UAAU,CACpB;UAAA,IAAA0D,SAAA,EAAAC,SAAA;UAAA,OAAMJ,MAAI,CAACzH,OAAO,CAAC,WAAW,EAAE;YAC9BjY,KAAK,EAALA,KAAK;YACLwH,SAAS,EAAE,OAAO;YAClBwQ,MAAM,GAAA6H,SAAA,GAAEje,OAAO,cAAAie,SAAA,uBAAPA,SAAA,CAAS7H,MAAM;YACvBG,aAAa,GAAA2H,SAAA,GAAEle,OAAO,cAAAke,SAAA,uBAAPA,SAAA,CAAS3H;WACzB,CAAC;WACF,UAACoC,QAAa;UAAA,OAAKmF,MAAI,CAACX,oBAAoB,CAACxE,QAAQ,EAAE3Y,OAAO,CAAC;WAAAjJ,aAAA,CAAAA,aAAA,KAC1DiJ,OAAO;UAAEyX,SAAS,EAAE;YACzBC,QACF,CAAC;;;MACFnd,GAAA;MAAAhB,KAAA;;EAOH;EACA;MACE,SAAO+X,GAAGA,CAAClT,KAAsC,EAAE4B,OAA2B,EAAE0X,QAAuC,EAAsC;QAAA,IAAAyG,MAAA;QAC3J,OAAO,IAAI,CAAC5D,UAAU,CACpB;UAAA,OAAM4D,MAAI,CAAC9H,OAAO,CAAC,KAAK,EAAE;YACxBjY,KAAK,EAALA,KAAK;YACLgY,MAAM,EAAEpW,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEoW,MAAM;YACvBG,aAAa,EAAEvW,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEuW;WACzB,CAAC;WACF,UAACoC,QAAa;UAAA,OAAMla,KAAK,CAACC,OAAO,CAACia,QAAQ,CAAC,GAAGA,QAAQ,CAAC3gB,GAAG,CAAC,UAAC6b,IAAI;YAAA,OAAK,IAAI1C,QAAQ,CAAC0C,IAAI,CAAC;YAAC,GAAG,IAAI1C,QAAQ,CAACwH,QAAQ,CAAC;SAAC,EAClH3Y,OAAO,EACP0X,QACF,CAAC;;;MACFnd,GAAA;MAAAhB,KAAA;;EAOH;EACA;MACE,SAAO8G,IAAIA,CAACL,OAA2B,EAAE0X,QAAmC,EAAkC;QAAA,IAAA0G,MAAA;QAC5G,OAAO,IAAI,CAAC7D,UAAU,CACpB;UAAA,OAAM6D,MAAI,CAAC/H,OAAO,CAAC,MAAM,EAAE;YACzBD,MAAM,EAAEpW,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEoW,MAAM;YACvBG,aAAa,EAAEvW,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEuW;WACzB,CAAC;WACF,UAAC1C,IAAkB;UAAA,OAAK,IAAIhC,IAAI,CAACgC,IAAI,CAAC;WACtC7T,OAAO,EACP0X,QACF,CAAC;;;MACFnd,GAAA;MAAAhB,KAAA;;EAOH;EACA;MACE,SAAO8kB,MAAMA,CAACjgB,KAAsC,EAAE4B,OAA2B,EAAE0X,QAA6C,EAA4C;QAAA,IAAA4G,MAAA;QAC1K,OAAO,IAAI,CAAC/D,UAAU,CACpB;UAAA,OAAM+D,MAAI,CAACjI,OAAO,CAAC,SAAS,EAAE;YAC5BjY,KAAK,EAALA,KAAK;YACLgY,MAAM,EAAEpW,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEoW,MAAM;YACvBG,aAAa,EAAEvW,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEuW;WACzB,CAAC;WACF,UAACoC,QAAwB;UAAA,OAAKA,QAAQ;WACtC3Y,OAAO,EACP0X,QACF,CAAC;;;MACFnd,GAAA;MAAAhB,KAAA;;EAOH;EACA;MACE,SAAOglB,OAAOA,CAACnN,QAAgB,EAAEpR,OAAwB,EAAE0X,QAA4C,EAA2C;QAAA,IAAA8G,MAAA;QAChJ,OAAO,IAAI,CAACjE,UAAU,CACpB,YAAM;UACJ,IAAMlE,OAAO,GAAGmI,MAAI,CAACnI,OAAO,CAAC,SAAS,EAAE;YACtCjY,KAAK,EAAEgT,QAAQ;YACfqN,KAAK,EAAEze,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEye,KAAK;YACrB1I,MAAM,EAAE,MAAM;YACdK,MAAM,EAAEpW,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEoW,MAAM;YACvBD,YAAY,EAAEnW,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEqX,OAAO;YAC9Bd,aAAa,EAAEvW,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEuW;WACzB,CAAC;UAEF,OAAOF,OAAO;SACf,EACD,UAACsC,QAAa,EAAK;;UAEjB,IAAI,CAACA,QAAQ,IAAI,CAACA,QAAQ,CAAC9F,KAAK,EAAE;YAChC,MAAM,IAAI9M,KAAK,CAAC,yBAAyB,CAAC;;;;UAI5C,IAAI4S,QAAQ,CAAC9F,KAAK,KAAK,SAAS,EAAE;YAChC,IAAM6L,SAAS,GAAG,CAAA1e,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEqX,OAAO,KAAI,CAAC,GAAG,EAAE,GAAG,IAAI;YACnD,MAAM,IAAItR,KAAK,kCAAA3J,MAAA,CAAkCsiB,SAAS,OAAI,CAAC;;UAGjE,IAAI/F,QAAQ,CAAC9F,KAAK,KAAK,SAAS,EAAE;YAChC,MAAM,IAAI9M,KAAK,CAAC,2BAA2B,CAAC;;UAG9C,IAAA4Y,qBAAA,GAA0BhG,QAAQ,CAAC9F,KAAK,CAACzZ,KAAK,CAAC,IAAI,CAAC;YAAAwlB,sBAAA,GAAAC,4BAAA,CAAAF,qBAAA;YAA7CzQ,MAAM,GAAA0Q,sBAAA;YAAK/Z,IAAI,GAAAia,iBAAA,CAAAF,sBAAA,EAAAhlB,KAAA;UAEtB,IAAI;YACF,IAAMmlB,YAAY,GAAGjI,IAAI,CAACuF,KAAK,CAACnO,MAAM,CAAC;YACvC,OAAAnX,aAAA;cACEmX,MAAM,EAAE6Q,YAAY,CAAC7Q,MAAM;cAC3BrJ,IAAI,EAAEA,IAAI,CACPhG,MAAM,CAAC,UAAC5G,CAAS;gBAAA,OAAKA,CAAC,CAACoX,IAAI,EAAE,CAAC/V,MAAM;gBAAC,CACtCtB,GAAG,CAAC,UAACC,CAAS;gBAAA,OAAK6e,IAAI,CAACuF,KAAK,CAACpkB,CAAC,CAAC,CAAC4M,IAAI;gBAAC,CACtC/B,MAAM,CAAC,UAACoK,CAAM,EAAEe,CAAM;gBAAA,OAAKf,CAAC,CAAC9Q,MAAM,CAAC6R,CAAC,CAAC;iBAAE,EAAE;eACzC8Q,YAAY,CAACC,eAAe,GAAG;cAAEA,eAAe,EAAED,YAAY,CAACC;aAAiB,GAAG,EAAE;WAE5F,CAAC,OAAOC,GAAG,EAAE;YACZ,MAAM,IAAIlZ,KAAK,CAAC4S,QAAQ,CAAC9F,KAAK,CAAC;;SAElC,EACD7S,OAAO,EACP0X,QACF,CAAC;;;;EAIL;EACA;EACA;;MAHEnd,GAAA;MAAAhB,KAAA,EAIA,SAAc2lB,aAAaA,CAAC9N,QAAgB,EAAEpR,OAAwB,EAAsC;QAAA,IAAAyI,KAAA;QAAA,OAAAgL,uCAAA,cAAAC,uCAAA,CAAAC,IAAA,UAAAwL;cAAAC,cAAA,EAAAC,OAAA,EAAAC,MAAA,EAAA9G,MAAA,EAAAtE,yBAAA,EAAAC,iBAAA,EAAAC,cAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,KAAA,EAAAgL,KAAA,EAAAC,UAAA,EAAAC,MAAA,EAAAC,IAAA,EAAAC,MAAA,EAAAC,OAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC;UAAA,OAAArM,uCAAA,CAAAe,IAAA,WAAAuL,SAAA;YAAA,kBAAAA,SAAA,CAAArL,IAAA,GAAAqL,SAAA,CAAApL,IAAA;cAAA;gBAAA,IACrGnM,KAAI,CAACwR,SAAS,CAACjC,aAAa;kBAAAgI,SAAA,CAAApL,IAAA;kBAAA;;gBAAA,MACzB,IAAI7O,KAAK,CAAC,sCAAsC,CAAC;cAAA;gBAGnDqZ,cAAc,GAAG3W,KAAI,CAACwR,SAAS,CAACjC,aAAa,CAAC,SAAS,EAAE;kBAC7DjC,MAAM,EAAE,MAAM;kBACdK,MAAM,EAAEpW,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEoW,MAAM;kBACvBD,YAAY,EAAEnW,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEqX,OAAO;kBAC9Bd,aAAa,EAAE+D,OAAM,EAAE;kBACvB9D,MAAM,EAAE;oBACNpY,KAAK,EAAEgT,QAAQ;oBACfqN,KAAK,EAAEze,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEye;;iBAEnB,CAAC;gBAEIY,OAAO,GAAG,IAAIY,WAAW,EAAE;gBAC7BX,MAAM,GAAG,EAAE;gBAAAU,SAAA,CAAArL,IAAA;gBAAAqL,SAAA,CAAApL,IAAA;gBAAA,OAAAE,wCAAA,CAGQsK,cAAc,CAAC5G,MAAM,EAAE;cAAA;gBAAtCA,MAAM,GAAAwH,SAAA,CAAAhL,IAAA;gBAAAd,yBAAA;gBAAAC,iBAAA;gBAAA6L,SAAA,CAAArL,IAAA;gBAAAN,SAAA,GAAAkB,cAAA,CAEciD,MAAM;cAAA;gBAAAwH,SAAA,CAAApL,IAAA;gBAAA,OAAAE,wCAAA,CAAAT,SAAA,CAAAO,IAAA;cAAA;gBAAA,MAAAV,yBAAA,KAAAI,KAAA,GAAA0L,SAAA,CAAAhL,IAAA,EAAAhB,IAAA;kBAAAgM,SAAA,CAAApL,IAAA;kBAAA;;gBAAfL,KAAK,GAAAD,KAAA,CAAA/a,KAAA;gBACpB+lB,MAAM,IAAID,OAAO,CAACa,MAAM,CAAC3L,KAAK,EAAE;kBAAEiE,MAAM,EAAE;iBAAM,CAAC;gBAE3C+G,KAAK,GAAGD,MAAM,CAAClmB,KAAK,CAAC,IAAI,CAAC;gBAChCkmB,MAAM,GAAGC,KAAK,CAACY,GAAG,EAAE,IAAI,EAAE;gBAACX,UAAA,GAAAY,0BAAA,CAERb,KAAK;gBAAAS,SAAA,CAAArL,IAAA;gBAAA6K,UAAA,CAAAa,CAAA;cAAA;gBAAA,KAAAZ,MAAA,GAAAD,UAAA,CAAAc,CAAA,IAAAtM,IAAA;kBAAAgM,SAAA,CAAApL,IAAA;kBAAA;;gBAAb8K,IAAI,GAAAD,MAAA,CAAAlmB,KAAA;gBAAA,KACTmmB,IAAI,CAACrQ,IAAI,EAAE;kBAAA2Q,SAAA,CAAApL,IAAA;kBAAA;;gBAAAoL,SAAA,CAAArL,IAAA;gBAELgL,MAAM,GAAG7I,IAAI,CAACuF,KAAK,CAACqD,IAAI,CAAC;gBAAA,KAE3BC,MAAM,CAACzR,MAAM;kBAAA8R,SAAA,CAAApL,IAAA;kBAAA;;gBAAAoL,SAAA,CAAApL,IAAA;gBACf,OAAA7d,aAAA;kBACEsX,IAAI,EAAE,QAAiB;kBACvBH,MAAM,EAAEyR,MAAM,CAACzR;mBACXyR,MAAM,CAACX,eAAe,GAAG;kBAAEA,eAAe,EAAEW,MAAM,CAACX;iBAAiB,GAAG,EAAE;cAC9E;gBAAAgB,SAAA,CAAApL,IAAA;gBAAA;cAAA;gBAAA,KACQ+K,MAAM,CAAC9a,IAAI;kBAAAmb,SAAA,CAAApL,IAAA;kBAAA;;gBAAAoL,SAAA,CAAApL,IAAA;gBACpB,OAAM;kBACJvG,IAAI,EAAE,MAAe;kBACrBxJ,IAAI,EAAE8a,MAAM,CAAC9a;iBACd;cAAA;gBAAAmb,SAAA,CAAApL,IAAA;gBAAA;cAAA;gBAAA,KACQ+K,MAAM,CAAC9M,KAAK;kBAAAmN,SAAA,CAAApL,IAAA;kBAAA;;gBAAAoL,SAAA,CAAApL,IAAA;gBACrB,OAAM;kBACJvG,IAAI,EAAE,OAAgB;kBACtBwE,KAAK,EAAE8M,MAAM,CAAC9M;iBACf;cAAA;gBAAAmN,SAAA,CAAApL,IAAA;gBAAA;cAAA;gBAAAoL,SAAA,CAAArL,IAAA;gBAAAqL,SAAA;gBAAAA,SAAA,CAAApL,IAAA;gBAGH,OAAM;kBACJvG,IAAI,EAAE,OAAgB;kBACtBwE,KAAK,gCAAAzW,MAAA,CAAgCsjB,IAAI;iBAC1C;cAAA;gBAAAM,SAAA,CAAApL,IAAA;gBAAA;cAAA;gBAAAoL,SAAA,CAAApL,IAAA;gBAAA;cAAA;gBAAAoL,SAAA,CAAArL,IAAA;gBAAAkL,GAAA,GAAAG,SAAA;gBAAAR,UAAA,CAAAvS,CAAA,CAAA4S,GAAA;cAAA;gBAAAG,SAAA,CAAArL,IAAA;gBAAA6K,UAAA,CAAA1gB,CAAA;gBAAA,OAAAkhB,SAAA,CAAA5K,MAAA;cAAA;gBAAAlB,yBAAA;gBAAA8L,SAAA,CAAApL,IAAA;gBAAA;cAAA;gBAAAoL,SAAA,CAAApL,IAAA;gBAAA;cAAA;gBAAAoL,SAAA,CAAArL,IAAA;gBAAAmL,GAAA,GAAAE,SAAA;gBAAA7L,iBAAA;gBAAAC,cAAA,GAAA0L,GAAA;cAAA;gBAAAE,SAAA,CAAArL,IAAA;gBAAAqL,SAAA,CAAArL,IAAA;gBAAA,MAAAT,yBAAA,IAAAG,SAAA;kBAAA2L,SAAA,CAAApL,IAAA;kBAAA;;gBAAAoL,SAAA,CAAApL,IAAA;gBAAA,OAAAE,wCAAA,CAAAT,SAAA;cAAA;gBAAA2L,SAAA,CAAArL,IAAA;gBAAA,KAAAR,iBAAA;kBAAA6L,SAAA,CAAApL,IAAA;kBAAA;;gBAAA,MAAAR,cAAA;cAAA;gBAAA,OAAA4L,SAAA,CAAA5K,MAAA;cAAA;gBAAA,OAAA4K,SAAA,CAAA5K,MAAA;cAAA;gBAAA,KAMLkK,MAAM,CAACjQ,IAAI,EAAE;kBAAA2Q,SAAA,CAAApL,IAAA;kBAAA;;gBAAAoL,SAAA,CAAArL,IAAA;gBAEPgL,OAAM,GAAG7I,IAAI,CAACuF,KAAK,CAACiD,MAAM,CAAC;gBAAA,KAE7BK,OAAM,CAACzR,MAAM;kBAAA8R,SAAA,CAAApL,IAAA;kBAAA;;gBAAAoL,SAAA,CAAApL,IAAA;gBACf,OAAA7d,aAAA;kBACEsX,IAAI,EAAE,QAAiB;kBACvBH,MAAM,EAAEyR,OAAM,CAACzR;mBACXyR,OAAM,CAACX,eAAe,GAAG;kBAAEA,eAAe,EAAEW,OAAM,CAACX;iBAAiB,GAAG,EAAE;cAC9E;gBAAAgB,SAAA,CAAApL,IAAA;gBAAA;cAAA;gBAAA,KACQ+K,OAAM,CAAC9a,IAAI;kBAAAmb,SAAA,CAAApL,IAAA;kBAAA;;gBAAAoL,SAAA,CAAApL,IAAA;gBACpB,OAAM;kBACJvG,IAAI,EAAE,MAAe;kBACrBxJ,IAAI,EAAE8a,OAAM,CAAC9a;iBACd;cAAA;gBAAAmb,SAAA,CAAApL,IAAA;gBAAA;cAAA;gBAAA,KACQ+K,OAAM,CAAC9M,KAAK;kBAAAmN,SAAA,CAAApL,IAAA;kBAAA;;gBAAAoL,SAAA,CAAApL,IAAA;gBACrB,OAAM;kBACJvG,IAAI,EAAE,OAAgB;kBACtBwE,KAAK,EAAE8M,OAAM,CAAC9M;iBACf;cAAA;gBAAAmN,SAAA,CAAApL,IAAA;gBAAA;cAAA;gBAAAoL,SAAA,CAAArL,IAAA;gBAAAqL,SAAA;gBAAAA,SAAA,CAAApL,IAAA;gBAGH,OAAM;kBACJvG,IAAI,EAAE,OAAgB;kBACtBwE,KAAK,qCAAAzW,MAAA,CAAqCkjB,MAAM;iBACjD;cAAA;gBAAAU,SAAA,CAAApL,IAAA;gBAAA;cAAA;gBAAAoL,SAAA,CAAArL,IAAA;gBAAAoL,GAAA,GAAAC,SAAA;gBAAA,MAIDD,GAAA,CAAM9oB,IAAI,KAAK,YAAY;kBAAA+oB,SAAA,CAAApL,IAAA;kBAAA;;gBAAA,MACvB,IAAI7O,KAAK,CAAC,SAAS,CAAC;cAAA;gBAAA,MAAAga,GAAA;cAAA;gBAAAC,SAAA,CAAArL,IAAA;gBAAA,KAIxByK,cAAc,CAACpG,WAAW;kBAAAgH,SAAA,CAAApL,IAAA;kBAAA;;gBAAAoL,SAAA,CAAApL,IAAA;gBAAA,OAAAE,wCAAA,CACtBsK,cAAc,CAACpG,WAAW,EAAE;cAAA;gBAAA,OAAAgH,SAAA,CAAA5K,MAAA;cAAA;cAAA;gBAAA,OAAA4K,SAAA,CAAArK,IAAA;;aAAAwJ,QAAA;;;;EAGvC;AAGH,cAAe,UAACnF,QAA0C,EAAEha,OAAuB;IAAA,OAAK,IAAI+Z,OAAO,CAACC,QAAQ,EAAEha,OAAO,CAAC;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MC/2BhHugB,OAAY,GAAGhO;EAErBtY,MAAM,CAACkC,IAAI,CAACqkB,iBAAiB,CAAC,CAACrmB,OAAO,CAAC,UAACI,GAAG,EAAK;IAC9CgmB,OAAO,CAAChmB,GAAG,CAAC,GAAIimB,iBAAiB,CAAyBjmB,GAAG,CAAC;EAChE,CAAC,CAAC;;;;;;;;"}
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\n// A custom locale for internal use that doesn't affect the global dayjs instance\nconst cubeInternalLocale = 'cube-internal-en';\nconst customLocale = {\n ...en,\n name: cubeInternalLocale,\n weekStart: 1\n};\n(dayjs as any).Ls[cubeInternalLocale] = customLocale;\n\nexport type SqlInterval = string;\n\n// TODO: Define a better type as unitOfTime.DurationConstructor in moment.js\nexport type ParsedInterval = Record<string, number>;\n\nexport type Granularity = {\n interval: SqlInterval;\n origin?: string;\n offset?: SqlInterval;\n};\n\nexport type DayRange = {\n by: (value: any) => dayjs.Dayjs[];\n snapTo: (value: any) => DayRange;\n start: dayjs.Dayjs;\n end: dayjs.Dayjs;\n};\n\nexport type TimeDimensionPredefinedGranularity =\n 'second'\n | 'minute'\n | 'hour'\n | 'day'\n | 'week'\n | 'month'\n | 'quarter'\n | 'year';\n\nexport type TimeDimensionGranularity = TimeDimensionPredefinedGranularity | string;\n\nexport type TGranularityMap = {\n name: TimeDimensionGranularity | undefined;\n title: string;\n};\n\nexport const GRANULARITIES: TGranularityMap[] = [\n { name: undefined, title: 'w/o grouping' },\n { name: 'second', title: 'Second' },\n { name: 'minute', title: 'Minute' },\n { name: 'hour', title: 'Hour' },\n { name: 'day', title: 'Day' },\n { name: 'week', title: 'Week' },\n { name: 'month', title: 'Month' },\n { name: 'quarter', title: 'Quarter' },\n { name: 'year', title: 'Year' },\n];\n\nexport const DEFAULT_GRANULARITY = 'day';\n\n// When granularity is week, weekStart Value must be 1. However, since the client can change it globally\n// (https://day.js.org/docs/en/i18n/changing-locale) So the function below has been added.\nexport const internalDayjs = (...args: any[]): dayjs.Dayjs => dayjs(...args).locale(cubeInternalLocale);\n\nexport const TIME_SERIES: Record<string, (range: DayRange) => string[]> = {\n day: (range) => range.by('d').map(d => d.format('YYYY-MM-DDT00:00:00.000')),\n month: (range) => range.snapTo('month').by('M').map(d => d.format('YYYY-MM-01T00:00:00.000')),\n year: (range) => range.snapTo('year').by('y').map(d => d.format('YYYY-01-01T00:00:00.000')),\n hour: (range) => range.by('h').map(d => d.format('YYYY-MM-DDTHH:00:00.000')),\n minute: (range) => range.by('m').map(d => d.format('YYYY-MM-DDTHH:mm:00.000')),\n second: (range) => range.by('s').map(d => d.format('YYYY-MM-DDTHH:mm:ss.000')),\n week: (range) => range.snapTo('week').by('w').map(d => d.startOf('week').format('YYYY-MM-DDT00:00:00.000')),\n quarter: (range) => range.snapTo('quarter').by('quarter').map(d => d.startOf('quarter').format(\n 'YYYY-MM-DDT00:00:00.000'\n )),\n};\n\nexport const isPredefinedGranularity = (granularity: TimeDimensionGranularity): boolean => !!TIME_SERIES[granularity];\n\nexport const DateRegex = /^\\d\\d\\d\\d-\\d\\d-\\d\\d$/;\nexport const LocalDateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z?$/;\n\n/**\n * Parse PostgreSQL-like interval string into object\n * E.g. '2 years 15 months 100 weeks 99 hours 15 seconds'\n * Negative units are also supported\n * E.g. '-2 months 5 days -10 hours'\n *\n * TODO: It's copy/paste of parseSqlInterval from @cubejs-backend/shared [time.ts]\n * It's not referenced to omit imports of moment.js staff.\n * Probably one day we should choose one implementation and reuse it in other places.\n */\nexport function parseSqlInterval(intervalStr: SqlInterval): ParsedInterval {\n const interval: ParsedInterval = {};\n const parts = intervalStr.split(/\\s+/);\n\n for (let i = 0; i < parts.length; i += 2) {\n const value = parseInt(parts[i], 10);\n const unit = parts[i + 1];\n\n // Remove ending 's' (e.g., 'days' -> 'day')\n const singularUnit = unit.endsWith('s') ? unit.slice(0, -1) : unit;\n interval[singularUnit] = value;\n }\n\n return interval;\n}\n\n/**\n * Adds interval to provided date.\n * TODO: It's copy/paste of addInterval from @cubejs-backend/shared [time.ts]\n * but operates with dayjs instead of moment.js\n * @param {dayjs} date\n * @param interval\n * @returns {dayjs}\n */\nexport function addInterval(date: dayjs.Dayjs, interval: ParsedInterval): dayjs.Dayjs {\n let res = date.clone();\n\n Object.entries(interval).forEach(([key, value]) => {\n res = res.add(value, key);\n });\n\n return res;\n}\n\n/**\n * Adds interval to provided date.\n * TODO: It's copy/paste of subtractInterval from @cubejs-backend/shared [time.ts]\n * but operates with dayjs instead of moment.js\n * @param {dayjs} date\n * @param interval\n * @returns {dayjs}\n */\nexport function subtractInterval(date: dayjs.Dayjs, interval: ParsedInterval): dayjs.Dayjs {\n let res = date.clone();\n\n Object.entries(interval).forEach(([key, value]) => {\n res = res.subtract(value, key);\n });\n\n return res;\n}\n\n/**\n * Returns the closest date prior to date parameter aligned with the origin point\n * TODO: It's copy/paste of alignToOrigin from @cubejs-backend/shared [time.ts]\n * but operates with dayjs instead of moment.js\n */\nfunction alignToOrigin(startDate: dayjs.Dayjs, interval: ParsedInterval, origin: dayjs.Dayjs): dayjs.Dayjs {\n let alignedDate = startDate.clone();\n let intervalOp;\n let isIntervalNegative = false;\n\n let offsetDate = addInterval(origin, interval);\n\n // The easiest way to check the interval sign\n if (offsetDate.isBefore(origin)) {\n isIntervalNegative = true;\n }\n\n offsetDate = origin.clone();\n\n if (startDate.isBefore(origin)) {\n intervalOp = isIntervalNegative ? addInterval : subtractInterval;\n\n while (offsetDate.isAfter(startDate)) {\n offsetDate = intervalOp(offsetDate, interval);\n }\n alignedDate = offsetDate;\n } else {\n intervalOp = isIntervalNegative ? subtractInterval : addInterval;\n\n while (offsetDate.isBefore(startDate)) {\n alignedDate = offsetDate.clone();\n offsetDate = intervalOp(offsetDate, interval);\n }\n\n if (offsetDate.isSame(startDate)) {\n alignedDate = offsetDate;\n }\n }\n\n return alignedDate;\n}\n\nexport const dayRange = (from: any, to: any, annotations?: Record<string, { granularity?: Granularity }>): DayRange => ({\n by: (value: any) => {\n const results = [];\n\n let start = internalDayjs(from);\n const end = internalDayjs(to);\n\n while (start.startOf(value).isBefore(end) || start.isSame(end)) {\n results.push(start);\n start = start.add(1, value);\n }\n\n return results;\n },\n snapTo: (value: any): DayRange => {\n // Check if this is a custom granularity\n if (!isPredefinedGranularity(value) && annotations) {\n // Try to find the custom granularity metadata\n // The annotation key might be in format \"Cube.dimension.granularity\"\n // So we need to search through all annotations\n let customGranularity: Granularity | undefined;\n\n for (const key of Object.keys(annotations)) {\n if (key.endsWith(`.${value}`) && annotations[key].granularity) {\n customGranularity = annotations[key].granularity;\n break;\n }\n }\n\n if (customGranularity?.interval) {\n // For custom granularities, calculate the range for the bucket\n const intervalParsed = parseSqlInterval(customGranularity.interval);\n let intervalStart = internalDayjs(from);\n\n // origin and offset are mutually exclusive\n // If either is specified, align to it\n if (customGranularity.origin || customGranularity.offset) {\n let origin;\n if (customGranularity.origin) {\n // Absolute origin time\n origin = internalDayjs(customGranularity.origin);\n } else {\n // offset is relative to start of year\n origin = addInterval(internalDayjs().startOf('year'), parseSqlInterval(customGranularity.offset!));\n }\n\n // Align the value to the origin to find the actual bucket start\n intervalStart = alignToOrigin(intervalStart, intervalParsed, origin);\n }\n\n // End is start + interval - 1 millisecond (to stay within the bucket)\n const intervalEnd = addInterval(intervalStart, intervalParsed).subtract(1, 'millisecond');\n\n return dayRange(intervalStart, intervalEnd, annotations);\n }\n }\n\n // Default behavior for predefined granularities\n return dayRange(internalDayjs(from).startOf(value), internalDayjs(to).endOf(value), annotations);\n },\n start: internalDayjs(from),\n end: internalDayjs(to),\n});\n\n/**\n * Returns the time series points for the custom interval\n * TODO: It's almost a copy/paste of timeSeriesFromCustomInterval from\n * @cubejs-backend/shared [time.ts] but operates with dayjs instead of moment.js\n */\nexport const timeSeriesFromCustomInterval = (from: string, to: string, granularity: Granularity): string[] => {\n const intervalParsed = parseSqlInterval(granularity.interval);\n const start = internalDayjs(from);\n const end = internalDayjs(to);\n let origin = granularity.origin ? internalDayjs(granularity.origin) : internalDayjs().startOf('year');\n if (granularity.offset) {\n origin = addInterval(origin, parseSqlInterval(granularity.offset));\n }\n let alignedStart = alignToOrigin(start, intervalParsed, origin);\n\n const dates = [];\n\n while (alignedStart.isBefore(end) || alignedStart.isSame(end)) {\n dates.push(alignedStart.format('YYYY-MM-DDTHH:mm:ss.000'));\n alignedStart = addInterval(alignedStart, intervalParsed);\n }\n\n return dates;\n};\n\n/**\n * Returns the lowest time unit for the interval\n */\nexport const diffTimeUnitForInterval = (interval: string): string => {\n if (/second/i.test(interval)) {\n return 'second';\n } else if (/minute/i.test(interval)) {\n return 'minute';\n } else if (/hour/i.test(interval)) {\n return 'hour';\n } else if (/day/i.test(interval)) {\n return 'day';\n } else if (/week/i.test(interval)) {\n return 'day';\n } else if (/month/i.test(interval)) {\n return 'month';\n } else if (/quarter/i.test(interval)) {\n return 'month';\n } else /* if (/year/i.test(interval)) */ {\n return 'year';\n }\n};\n\nconst granularityOrder = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second'];\n\nexport const minGranularityForIntervals = (i1: string, i2: string): string => {\n const g1 = diffTimeUnitForInterval(i1);\n const g2 = diffTimeUnitForInterval(i2);\n const g1pos = granularityOrder.indexOf(g1);\n const g2pos = granularityOrder.indexOf(g2);\n\n if (g1pos > g2pos) {\n return g1;\n }\n\n return g2;\n};\n\nexport const granularityFor = (dateStr: string): string => {\n const dayjsDate = internalDayjs(dateStr);\n const month = dayjsDate.month();\n const date = dayjsDate.date();\n const hours = dayjsDate.hour();\n const minutes = dayjsDate.minute();\n const seconds = dayjsDate.second();\n const milliseconds = dayjsDate.millisecond();\n const weekDay = dayjsDate.isoWeekday();\n\n if (\n month === 0 &&\n date === 1 &&\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'year';\n } else if (\n date === 1 &&\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'month';\n } else if (\n weekDay === 1 &&\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'week';\n } else if (\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'day';\n } else if (\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'hour';\n } else if (\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'minute';\n } else if (\n milliseconds === 0\n ) {\n return 'second';\n }\n\n return 'second'; // TODO return 'millisecond';\n};\n","import { clone, equals, fromPairs, indexBy, prop, toPairs } from 'ramda';\nimport { DeeplyReadonly } from './index';\nimport { DEFAULT_GRANULARITY } from './time';\nimport {\n Filter,\n PivotConfig,\n Query,\n QueryOrder,\n TDefaultHeuristicsOptions,\n TDefaultHeuristicsResponse,\n TDefaultHeuristicsState,\n TFlatFilter,\n TOrderMember,\n TQueryOrderArray,\n TQueryOrderObject,\n TSourceAxis\n} from './types';\n\nexport function removeEmptyQueryFields(_query: DeeplyReadonly<Query>) {\n const query = _query || {};\n\n return fromPairs(\n toPairs(query).flatMap(([key, value]) => {\n if (\n ['measures', 'dimensions', 'segments', 'timeDimensions', 'filters'].includes(key)\n ) {\n if (Array.isArray(value) && value.length === 0) {\n return [];\n }\n }\n\n if (key === 'order' && value) {\n if (Array.isArray(value) && value.length === 0) {\n return [];\n } else if (!Object.keys(value).length) {\n return [];\n }\n }\n\n return [[key, value]];\n })\n );\n}\n\nexport function validateQuery(_query: DeeplyReadonly<Query> | null | undefined): Query {\n const query = _query || {};\n\n return removeEmptyQueryFields({\n ...query,\n filters: (query.filters || []).filter((f) => 'operator' in f),\n timeDimensions: (query.timeDimensions || []).filter(\n (td) => !(!td.dateRange && !td.granularity)\n ),\n });\n}\n\nexport function areQueriesEqual(query1: DeeplyReadonly<Query> | null, query2: DeeplyReadonly<Query> | null): boolean {\n return (\n equals(\n Object.entries(query1?.order || {}),\n Object.entries(query2?.order || {})\n ) && equals(query1, query2)\n );\n}\n\nexport function defaultOrder(query: DeeplyReadonly<Query>): { [key: string]: QueryOrder } {\n const granularity = (query.timeDimensions || []).find((d) => d.granularity);\n\n if (granularity) {\n return {\n [granularity.dimension]: 'asc',\n };\n } else if (\n (query.measures || []).length > 0 &&\n (query.dimensions || []).length > 0\n ) {\n return {\n [query.measures![0]]: 'desc',\n };\n } else if ((query.dimensions || []).length > 0) {\n return {\n [query.dimensions![0]]: 'asc',\n };\n }\n\n return {};\n}\n\nexport function defaultHeuristics(\n newState: TDefaultHeuristicsState,\n oldQuery: Query,\n options: TDefaultHeuristicsOptions\n): TDefaultHeuristicsResponse {\n const { query, ...props } = clone(newState);\n const { meta, sessionGranularity } = options;\n const granularity = sessionGranularity || DEFAULT_GRANULARITY;\n\n let state: TDefaultHeuristicsResponse = {\n shouldApplyHeuristicOrder: false,\n pivotConfig: null,\n query,\n ...props,\n };\n\n let newQuery = null;\n if (!areQueriesEqual(query, oldQuery)) {\n newQuery = query;\n }\n\n if (Array.isArray(newQuery) || Array.isArray(oldQuery)) {\n return {\n shouldApplyHeuristicOrder: false,\n pivotConfig: null,\n ...newState,\n };\n }\n\n if (newQuery) {\n if (\n (oldQuery.timeDimensions || []).length === 1 &&\n (newQuery.timeDimensions || []).length === 1 &&\n newQuery.timeDimensions![0].granularity &&\n oldQuery.timeDimensions![0].granularity !==\n newQuery.timeDimensions![0].granularity\n ) {\n state = {\n ...state,\n sessionGranularity: newQuery.timeDimensions![0].granularity,\n };\n }\n\n if (\n ((oldQuery.measures || []).length === 0 &&\n (newQuery.measures || []).length > 0) ||\n ((oldQuery.measures || []).length === 1 &&\n (newQuery.measures || []).length === 1 &&\n oldQuery.measures![0] !== newQuery.measures![0])\n ) {\n const [td] = newQuery.timeDimensions || [];\n const defaultTimeDimension = meta.defaultTimeDimensionNameFor(\n newQuery.measures![0]\n );\n newQuery = {\n ...newQuery,\n timeDimensions: defaultTimeDimension\n ? [\n {\n dimension: defaultTimeDimension,\n granularity: td?.granularity || granularity,\n dateRange: td?.dateRange,\n },\n ]\n : [],\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: defaultTimeDimension ? 'line' : 'number',\n };\n }\n\n if (\n (oldQuery.dimensions || []).length === 0 &&\n (newQuery.dimensions || []).length > 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: (newQuery.timeDimensions || []).map((td) => ({\n ...td,\n granularity: undefined,\n })),\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: 'table',\n };\n }\n\n if (\n (oldQuery.dimensions || []).length > 0 &&\n (newQuery.dimensions || []).length === 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: (newQuery.timeDimensions || []).map((td) => ({\n ...td,\n granularity: td.granularity || granularity,\n })),\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: (newQuery.timeDimensions || []).length ? 'line' : 'number',\n };\n }\n\n if (\n ((oldQuery.dimensions || []).length > 0 ||\n (oldQuery.measures || []).length > 0) &&\n (newQuery.dimensions || []).length === 0 &&\n (newQuery.measures || []).length === 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: [],\n filters: [],\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n sessionGranularity: null,\n };\n }\n return state;\n }\n\n if (state.chartType) {\n const newChartType = state.chartType;\n if (\n (newChartType === 'line' || newChartType === 'area') &&\n (oldQuery.timeDimensions || []).length === 1 &&\n !oldQuery.timeDimensions![0].granularity\n ) {\n const [td] = oldQuery.timeDimensions!;\n return {\n ...state,\n pivotConfig: null,\n query: {\n ...oldQuery,\n timeDimensions: [{ ...td, granularity }],\n },\n };\n }\n\n if (\n (newChartType === 'pie' ||\n newChartType === 'table' ||\n newChartType === 'number') &&\n (oldQuery.timeDimensions || []).length === 1 &&\n oldQuery.timeDimensions![0].granularity\n ) {\n const [td] = oldQuery.timeDimensions!;\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: {\n ...oldQuery,\n timeDimensions: [{ ...td, granularity: undefined }],\n },\n };\n }\n }\n\n return state;\n}\n\nexport function isQueryPresent(query: DeeplyReadonly<Query | Query[]> | null | undefined): boolean {\n if (!query) {\n return false;\n }\n\n return (Array.isArray(query) ? query : [query]).every(\n (q) => q.measures?.length || q.dimensions?.length || q.timeDimensions?.length\n );\n}\n\nexport function movePivotItem(\n pivotConfig: PivotConfig,\n sourceIndex: number,\n destinationIndex: number,\n sourceAxis: TSourceAxis,\n destinationAxis: TSourceAxis\n): PivotConfig {\n const nextPivotConfig = {\n ...pivotConfig,\n x: [...(pivotConfig.x || [])],\n y: [...(pivotConfig.y || [])],\n };\n const id = pivotConfig[sourceAxis]![sourceIndex];\n const lastIndex = nextPivotConfig[destinationAxis].length - 1;\n\n if (id === 'measures') {\n destinationIndex = lastIndex + 1;\n } else if (\n sourceAxis === destinationAxis &&\n destinationIndex >= lastIndex &&\n nextPivotConfig[destinationAxis][lastIndex] === 'measures'\n ) {\n destinationIndex = lastIndex - 1;\n } else if (\n sourceAxis !== destinationAxis &&\n destinationIndex > lastIndex &&\n nextPivotConfig[destinationAxis][lastIndex] === 'measures'\n ) {\n destinationIndex = lastIndex;\n }\n\n nextPivotConfig[sourceAxis].splice(sourceIndex, 1);\n nextPivotConfig[destinationAxis].splice(destinationIndex, 0, id);\n\n return nextPivotConfig;\n}\n\nexport function moveItemInArray<T = any>(list: T[], sourceIndex: number, destinationIndex: number): T[] {\n const result = [...list];\n const [removed] = result.splice(sourceIndex, 1);\n result.splice(destinationIndex, 0, removed);\n\n return result;\n}\n\nexport function flattenFilters(filters: Filter[] = []): TFlatFilter[] {\n return filters.reduce<TFlatFilter[]>((memo, filter) => {\n if ('or' in filter) {\n return [...memo, ...flattenFilters(filter.or)];\n }\n\n if ('and' in filter) {\n return [...memo, ...flattenFilters(filter.and)];\n }\n\n return [...memo, filter];\n }, []);\n}\n\nexport function getQueryMembers(query: DeeplyReadonly<Query> = {}): string[] {\n const keys = ['measures', 'dimensions', 'segments'] as const;\n const members = new Set<string>();\n\n keys.forEach((key) => (query[key] || []).forEach((member) => members.add(member)));\n (query.timeDimensions || []).forEach((td) => members.add(td.dimension));\n\n const filters = flattenFilters(query.filters as Filter[]);\n filters.forEach((filter) => {\n const member = filter.dimension || filter.member;\n if (typeof member === 'string') {\n members.add(member);\n }\n });\n\n return [...members];\n}\n\nexport function getOrderMembersFromOrder(orderMembers: any[], order: TQueryOrderObject | TQueryOrderArray): TOrderMember[] {\n const ids = new Set<string>();\n const indexedOrderMembers = indexBy(prop('id'), orderMembers);\n const entries = Array.isArray(order) ? order : Object.entries(order || {});\n const nextOrderMembers: TOrderMember[] = [];\n\n entries.forEach(([memberId, currentOrder]) => {\n if (currentOrder !== 'none' && indexedOrderMembers[memberId]) {\n ids.add(memberId);\n nextOrderMembers.push({\n ...indexedOrderMembers[memberId],\n order: currentOrder,\n });\n }\n });\n orderMembers.forEach((member) => {\n if (!ids.has(member.id)) {\n nextOrderMembers.push({\n ...member,\n order: member.order || 'none',\n });\n }\n });\n\n return nextOrderMembers;\n}\n\nexport function aliasSeries(values: string[], index: number, pivotConfig?: Partial<PivotConfig>, duplicateMeasures: Set<string> = new Set()) {\n const nonNullValues = values.filter((value: any) => value != null);\n\n if (pivotConfig?.aliasSeries?.[index]) {\n return [pivotConfig.aliasSeries[index], ...nonNullValues];\n } else if (duplicateMeasures.has(nonNullValues[0])) {\n return [index, ...nonNullValues];\n }\n\n return nonNullValues;\n}\n","import dayjs from 'dayjs';\nimport {\n groupBy, pipe, fromPairs, uniq, map, dropLast, equals, reduce, minBy, maxBy, clone, mergeDeepLeft,\n flatten,\n} from 'ramda';\n\nimport { aliasSeries } from './utils';\nimport {\n DateRegex,\n dayRange,\n internalDayjs,\n isPredefinedGranularity,\n LocalDateRegex,\n TIME_SERIES,\n timeSeriesFromCustomInterval\n} from './time';\nimport {\n Annotation,\n ChartPivotRow, DateRange,\n DrillDownLocator,\n LoadResponse,\n LoadResponseResult, Pivot,\n PivotConfig, PivotConfigFull,\n PivotQuery,\n PivotRow,\n Query,\n QueryAnnotations, QueryType,\n SerializedResult,\n Series,\n SeriesNamesColumn,\n TableColumn,\n TimeDimension\n} from './types';\n\nconst groupByToPairs = function groupByToPairsImpl<T, K>(keyFn: (item: T) => K): (data: T[]) => [K, T[]][] {\n const acc = new Map();\n\n return (data) => {\n data.forEach((row) => {\n const key = keyFn(row);\n\n if (!acc.has(key)) {\n acc.set(key, []);\n }\n\n acc.get(key).push(row);\n });\n\n return Array.from(acc.entries());\n };\n};\n\nconst unnest = (arr: any[][]): any[] => {\n const res: any[] = [];\n arr.forEach((subArr) => {\n subArr.forEach(element => res.push(element));\n });\n\n return res;\n};\n\nexport const QUERY_TYPE: Record<string, QueryType> = {\n REGULAR_QUERY: 'regularQuery',\n COMPARE_DATE_RANGE_QUERY: 'compareDateRangeQuery',\n BLENDING_QUERY: 'blendingQuery',\n};\n\nexport type ResultSetOptions = {\n parseDateMeasures?: boolean;\n};\n\n/**\n * Provides a convenient interface for data manipulation.\n */\nexport default class ResultSet<T extends Record<string, any> = any> {\n private readonly loadResponse: LoadResponse<T>;\n\n private readonly loadResponses: LoadResponseResult<T>[];\n\n private readonly queryType: QueryType;\n\n private readonly parseDateMeasures: boolean | undefined;\n\n private readonly options: {};\n\n private readonly backwardCompatibleData: Record<string, any>[][];\n\n public static measureFromAxis(axisValues: string[]): string {\n return axisValues[axisValues.length - 1];\n }\n\n public static timeDimensionMember(td: TimeDimension) {\n return `${td.dimension}.${td.granularity}`;\n }\n\n /**\n * ```js\n * import { ResultSet } from '@cubejs-client/core';\n *\n * const resultSet = await cubeApi.load(query);\n * // You can store the result somewhere\n * const tmp = resultSet.serialize();\n *\n * // and restore it later\n * const resultSet = ResultSet.deserialize(tmp);\n * ```\n * @param data the result of [serialize](#result-set-serialize)\n * @param options\n */\n public static deserialize<TData extends Record<string, any> = any>(data: SerializedResult, options?: Object): ResultSet<TData> {\n return new ResultSet(data.loadResponse, options);\n }\n\n public constructor(loadResponse: LoadResponse<T> | LoadResponseResult<T>, options: ResultSetOptions = {}) {\n if ('queryType' in loadResponse && loadResponse.queryType != null) {\n this.loadResponse = loadResponse;\n this.queryType = loadResponse.queryType;\n this.loadResponses = loadResponse.results;\n } else {\n this.queryType = QUERY_TYPE.REGULAR_QUERY;\n this.loadResponse = {\n ...loadResponse,\n pivotQuery: {\n ...loadResponse.query,\n queryType: this.queryType\n }\n } as LoadResponse<T>;\n this.loadResponses = [loadResponse as LoadResponseResult<T>];\n }\n\n if (!Object.values(QUERY_TYPE).includes(this.queryType)) {\n throw new Error('Unknown query type');\n }\n\n this.parseDateMeasures = options.parseDateMeasures;\n this.options = options;\n\n this.backwardCompatibleData = [];\n }\n\n /**\n * Returns a measure drill down query.\n *\n * Provided you have a measure with the defined `drillMembers` on the `Orders` cube\n * ```js\n * measures: {\n * count: {\n * type: `count`,\n * drillMembers: [Orders.status, Users.city, count],\n * },\n * // ...\n * }\n * ```\n *\n * Then you can use the `drillDown` method to see the rows that contribute to that metric\n * ```js\n * resultSet.drillDown(\n * {\n * xValues,\n * yValues,\n * },\n * // you should pass the `pivotConfig` if you have used it for axes manipulation\n * pivotConfig\n * )\n * ```\n *\n * the result will be a query with the required filters applied and the dimensions/measures filled out\n * ```js\n * {\n * measures: ['Orders.count'],\n * dimensions: ['Orders.status', 'Users.city'],\n * filters: [\n * // dimension and measure filters\n * ],\n * timeDimensions: [\n * //...\n * ]\n * }\n * ```\n *\n * In case when you want to add `order` or `limit` to the query, you can simply spread it\n *\n * ```js\n * // An example for React\n * const drillDownResponse = useCubeQuery(\n * {\n * ...drillDownQuery,\n * limit: 30,\n * order: {\n * 'Orders.ts': 'desc'\n * }\n * },\n * {\n * skip: !drillDownQuery\n * }\n * );\n * ```\n * @returns Drill down query\n */\n public drillDown(drillDownLocator: DrillDownLocator, pivotConfig?: PivotConfig): Query | null {\n if (this.queryType === QUERY_TYPE.COMPARE_DATE_RANGE_QUERY) {\n throw new Error('compareDateRange drillDown query is not currently supported');\n }\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n throw new Error('Data blending drillDown query is not currently supported');\n }\n\n const { query } = this.loadResponses[0];\n const xValues = drillDownLocator?.xValues ?? [];\n const yValues = drillDownLocator?.yValues ?? [];\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);\n\n const values: string[][] = [];\n normalizedPivotConfig?.x.forEach((member, currentIndex) => values.push([member, xValues[currentIndex]]));\n normalizedPivotConfig?.y.forEach((member, currentIndex) => values.push([member, yValues[currentIndex]]));\n\n const { filters: parentFilters = [], segments = [] } = this.query();\n const { measures, timeDimensions: timeDimensionsAnnotation } = this.loadResponses[0].annotation;\n let [, measureName] = values.find(([member]) => member === 'measures') || [];\n\n if (measureName === undefined) {\n [measureName] = Object.keys(measures);\n }\n\n if (!(measures[measureName]?.drillMembers?.length ?? 0)) {\n return null;\n }\n\n const filters = [\n {\n member: measureName,\n operator: 'measureFilter',\n },\n ...parentFilters\n ];\n const timeDimensions = [];\n\n values.filter(([member]) => member !== 'measures')\n .forEach(([member, value]) => {\n const [cubeName, dimension, granularity] = member.split('.');\n\n if (granularity !== undefined) {\n // dayRange.snapTo now handles both predefined and custom granularities\n const range = dayRange(value, value, timeDimensionsAnnotation).snapTo(granularity);\n\n const originalTimeDimension = query.timeDimensions?.find((td) => td.dimension);\n\n let dateRange = [\n range.start,\n range.end\n ];\n\n if (originalTimeDimension?.dateRange) {\n const [originalStart, originalEnd] = originalTimeDimension.dateRange;\n\n dateRange = [\n dayjs(originalStart) > range.start ? dayjs(originalStart) : range.start,\n dayjs(originalEnd) < range.end ? dayjs(originalEnd) : range.end,\n ];\n }\n\n timeDimensions.push({\n dimension: [cubeName, dimension].join('.'),\n dateRange: dateRange.map((dt) => dt.format('YYYY-MM-DDTHH:mm:ss.SSS')),\n });\n } else if (value == null) {\n filters.push({\n member,\n operator: 'notSet',\n });\n } else {\n filters.push({\n member,\n operator: 'equals',\n values: [value.toString()],\n });\n }\n });\n\n if (\n timeDimensions.length === 0 &&\n Array.isArray(query.timeDimensions) &&\n query.timeDimensions.length > 0 &&\n query.timeDimensions[0].granularity == null\n ) {\n timeDimensions.push(query.timeDimensions[0]);\n }\n\n return {\n ...measures[measureName].drillMembersGrouped,\n filters,\n ...(segments.length > 0 ? { segments } : {}),\n timeDimensions,\n segments,\n timezone: query.timezone\n };\n }\n\n /**\n * Returns an array of series with key, title and series data.\n * ```js\n * // For the query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.series() will return\n * [\n * {\n * key: 'Stories.count',\n * title: 'Stories Count',\n * shortTitle: 'Count',\n * series: [\n * { x: '2015-01-01T00:00:00', value: 27120 },\n * { x: '2015-02-01T00:00:00', value: 25861 },\n * { x: '2015-03-01T00:00:00', value: 29661 },\n * //...\n * ],\n * },\n * ]\n * ```\n */\n public series<SeriesItem = any>(pivotConfig?: PivotConfig): Series<SeriesItem>[] {\n return this.seriesNames(pivotConfig).map(({ title, shortTitle, key }) => ({\n title,\n shortTitle,\n key,\n series: this.chartPivot(pivotConfig).map(({ x, ...obj }) => ({ value: obj[key], x }))\n } as Series<SeriesItem>));\n }\n\n private axisValues(axis: string[], resultIndex = 0) {\n const { query } = this.loadResponses[resultIndex];\n\n return (row: Record<string, any>) => {\n const value = (measure?: string) => axis\n .filter(d => d !== 'measures')\n .map((d: string) => {\n const val = row[d];\n return val != null ? val : null;\n })\n .concat(measure ? [measure] : []);\n\n if (axis.find(d => d === 'measures') && (query.measures || []).length) {\n return (query.measures || []).map(value);\n }\n\n return [value()];\n };\n }\n\n private axisValuesString(axisValues: (string | number)[], delimiter: string = ', '): string {\n const formatValue = (v: string | number) => {\n if (v == null) {\n return '∅';\n } else if (v === '') {\n return '[Empty string]';\n } else {\n return v;\n }\n };\n return axisValues.map(formatValue).join(delimiter);\n }\n\n public static getNormalizedPivotConfig(query?: PivotQuery, pivotConfig?: PivotConfig): PivotConfigFull {\n const defaultPivotConfig: PivotConfig = {\n x: [],\n y: [],\n fillMissingDates: true,\n joinDateRange: false\n };\n\n const {\n measures = [],\n dimensions = []\n } = query || {};\n\n const timeDimensions = (query?.timeDimensions || []).filter(td => !!td.granularity);\n\n pivotConfig = pivotConfig || (timeDimensions.length ? {\n x: timeDimensions.map(td => ResultSet.timeDimensionMember(td)),\n y: dimensions\n } : {\n x: dimensions,\n y: []\n });\n\n const normalizedPivotConfig = mergeDeepLeft(pivotConfig, defaultPivotConfig) as PivotConfigFull;\n\n const substituteTimeDimensionMembers = (axis: string[]) => axis.map(\n subDim => (\n (\n timeDimensions.find(td => td.dimension === subDim) &&\n !dimensions.find(d => d === subDim)\n ) ?\n ResultSet.timeDimensionMember((query?.timeDimensions || []).find(td => td.dimension === subDim)!) :\n subDim\n )\n );\n\n normalizedPivotConfig.x = substituteTimeDimensionMembers(normalizedPivotConfig.x);\n normalizedPivotConfig.y = substituteTimeDimensionMembers(normalizedPivotConfig.y);\n\n const allIncludedDimensions = normalizedPivotConfig.x.concat(normalizedPivotConfig.y);\n const allDimensions = timeDimensions.map(td => ResultSet.timeDimensionMember(td)).concat(dimensions);\n\n const dimensionFilter = (key: string) => allDimensions.includes(key) || key === 'measures';\n\n normalizedPivotConfig.x = normalizedPivotConfig.x.concat(\n allDimensions.filter(d => !allIncludedDimensions.includes(d) && d !== 'compareDateRange')\n )\n .filter(dimensionFilter);\n normalizedPivotConfig.y = normalizedPivotConfig.y.filter(dimensionFilter);\n\n if (!normalizedPivotConfig.x.concat(normalizedPivotConfig.y).find(d => d === 'measures')) {\n normalizedPivotConfig.y.push('measures');\n }\n\n if (dimensions.includes('compareDateRange') && !normalizedPivotConfig.y.concat(normalizedPivotConfig.x).includes('compareDateRange')) {\n normalizedPivotConfig.y.unshift('compareDateRange');\n }\n\n if (!measures.length) {\n normalizedPivotConfig.x = normalizedPivotConfig.x.filter(d => d !== 'measures');\n normalizedPivotConfig.y = normalizedPivotConfig.y.filter(d => d !== 'measures');\n }\n\n return normalizedPivotConfig;\n }\n\n public normalizePivotConfig(pivotConfig?: PivotConfig): PivotConfigFull {\n return ResultSet.getNormalizedPivotConfig(this.loadResponse.pivotQuery, pivotConfig);\n }\n\n public timeSeries(timeDimension: TimeDimension, resultIndex?: number, annotations?: Record<string, Annotation>) {\n if (!timeDimension.granularity) {\n return null;\n }\n\n let dateRange: DateRange | null | undefined;\n dateRange = timeDimension.dateRange;\n\n if (!dateRange) {\n const member = ResultSet.timeDimensionMember(timeDimension);\n const rawRows: Record<string, any>[] = this.timeDimensionBackwardCompatibleData(resultIndex || 0);\n\n const dates = rawRows\n .map(row => {\n const value = row[member];\n return value ? internalDayjs(value) : null;\n })\n .filter((d): d is dayjs.Dayjs => Boolean(d));\n\n dateRange = dates.length && [\n (reduce(minBy((d: dayjs.Dayjs): Date => d.toDate()), dates[0], dates)).toString(),\n (reduce(maxBy((d: dayjs.Dayjs): Date => d.toDate()), dates[0], dates)).toString(),\n ] || null;\n }\n\n if (!dateRange) {\n return null;\n }\n\n const padToDay = timeDimension.dateRange ?\n (timeDimension.dateRange as string[]).find(d => d.match(DateRegex)) :\n !['hour', 'minute', 'second'].includes(timeDimension.granularity);\n\n const [start, end] = dateRange;\n const range = dayRange(start, end, annotations);\n\n if (isPredefinedGranularity(timeDimension.granularity)) {\n return TIME_SERIES[timeDimension.granularity](\n padToDay ? range.snapTo('d') : range\n );\n }\n\n if (!annotations?.[`${timeDimension.dimension}.${timeDimension.granularity}`]) {\n throw new Error(`Granularity \"${timeDimension.granularity}\" not found in time dimension \"${timeDimension.dimension}\"`);\n }\n\n return timeSeriesFromCustomInterval(\n start, end, annotations[`${timeDimension.dimension}.${timeDimension.granularity}`].granularity!\n );\n }\n\n /**\n * Base method for pivoting [ResultSet](#result-set) data.\n * Most of the time shouldn't be used directly and [chartPivot](#result-set-chart-pivot)\n * or [tablePivot](#table-pivot) should be used instead.\n *\n * You can find the examples of using the `pivotConfig` [here](#types-pivot-config)\n * ```js\n * // For query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-03-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.pivot({ x: ['Stories.time'], y: ['measures'] }) will return\n * [\n * {\n * xValues: [\"2015-01-01T00:00:00\"],\n * yValuesArray: [\n * [['Stories.count'], 27120]\n * ]\n * },\n * {\n * xValues: [\"2015-02-01T00:00:00\"],\n * yValuesArray: [\n * [['Stories.count'], 25861]\n * ]\n * },\n * {\n * xValues: [\"2015-03-01T00:00:00\"],\n * yValuesArray: [\n * [['Stories.count'], 29661]\n * ]\n * }\n * ]\n * ```\n * @returns An array of pivoted rows.\n */\n public pivot(pivotConfig?: PivotConfig): PivotRow[] {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);\n const { pivotQuery: query } = this.loadResponse;\n\n const pivotImpl = (resultIndex = 0) => {\n let groupByXAxis = groupByToPairs<{ xValues: string[], row: Record<string, any> }, string>(({ xValues }) => this.axisValuesString(xValues));\n const measureValue = (row: Record<string, any>, measure: string) => row[measure] ?? normalizedPivotConfig.fillWithValue ?? 0;\n\n if (\n normalizedPivotConfig.fillMissingDates &&\n normalizedPivotConfig.x.length === 1 &&\n (equals(\n normalizedPivotConfig.x,\n (query.timeDimensions || [])\n .filter(td => Boolean(td.granularity))\n .map(td => ResultSet.timeDimensionMember(td))\n ))\n ) {\n const series = this.loadResponses.map(\n (loadResponse) => this.timeSeries(\n loadResponse.query.timeDimensions![0],\n resultIndex,\n loadResponse.annotation.timeDimensions\n )\n );\n\n if (series[0]) {\n groupByXAxis = (rows) => {\n const byXValues = groupBy(\n ({ xValues }) => xValues[0],\n rows\n );\n return series[resultIndex]?.map(d => [d, byXValues[d] || [{ xValues: [d], row: {} }]]) ?? [];\n };\n }\n }\n\n const xGrouped: [string, { xValues: string[], row: Record<string, any> }[]][] = pipe(\n map((row: Record<string, any>) => this.axisValues(normalizedPivotConfig.x, resultIndex)(row).map(xValues => ({ xValues, row }))),\n unnest,\n groupByXAxis\n )(this.timeDimensionBackwardCompatibleData(resultIndex));\n\n const yValuesMap: Record<string, any> = {};\n xGrouped.forEach(([, rows]) => {\n rows.forEach(({ row }) => {\n this.axisValues(normalizedPivotConfig.y, resultIndex)(row).forEach((values) => {\n if (Object.keys(row).length > 0) {\n yValuesMap[values.join()] = values;\n }\n });\n });\n });\n const allYValues = Object.values(yValuesMap);\n\n const measureOnX = Boolean((normalizedPivotConfig.x).find(d => d === 'measures'));\n\n return xGrouped.map(([, rows]) => {\n const { xValues } = rows[0];\n const yGrouped: Record<string, any> = {};\n\n rows.forEach(({ row }) => {\n const arr = this.axisValues(normalizedPivotConfig.y, resultIndex)(row).map(yValues => ({ yValues, row }));\n arr.forEach((res) => {\n yGrouped[this.axisValuesString(res.yValues)] = res;\n });\n });\n\n return {\n xValues,\n yValuesArray: unnest(allYValues.map(yValues => {\n const measure = measureOnX ?\n ResultSet.measureFromAxis(xValues) :\n ResultSet.measureFromAxis(yValues);\n\n return [[yValues, measureValue((yGrouped[this.axisValuesString(yValues)] ||\n ({ row: {} })).row, measure)]];\n }))\n };\n });\n };\n\n const pivots = this.loadResponses.length > 1\n ? this.loadResponses.map((_, index) => pivotImpl(index))\n : [];\n\n return pivots.length\n ? this.mergePivots(pivots, normalizedPivotConfig.joinDateRange || false)\n : pivotImpl();\n }\n\n private mergePivots(pivots: Pivot[][], joinDateRange: ((pivots: Pivot, joinDateRange: any) => PivotRow[]) | false): PivotRow[] {\n const minLengthPivot: Pivot[] = pivots.reduce<Pivot[] | null>(\n (memo, current) => (memo != null && current.length >= memo.length ? memo : current), null\n ) || [];\n\n return minLengthPivot.map((_: any, index: number) => {\n const xValues = joinDateRange\n ? [pivots.map((pivot) => pivot[index]?.xValues || []).join(', ')]\n : minLengthPivot[index].xValues;\n\n return {\n xValues,\n yValuesArray: unnest(pivots.map((pivot) => pivot[index].yValuesArray))\n };\n });\n }\n\n /**\n * Returns normalized query result data in the following format.\n *\n * You can find the examples of using the `pivotConfig` [here](#types-pivot-config)\n * ```js\n * // For the query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.chartPivot() will return\n * [\n * { \"x\":\"2015-01-01T00:00:00\", \"Stories.count\": 27120, \"xValues\": [\"2015-01-01T00:00:00\"] },\n * { \"x\":\"2015-02-01T00:00:00\", \"Stories.count\": 25861, \"xValues\": [\"2015-02-01T00:00:00\"] },\n * { \"x\":\"2015-03-01T00:00:00\", \"Stories.count\": 29661, \"xValues\": [\"2015-03-01T00:00:00\"] },\n * //...\n * ]\n *\n * ```\n * When using `chartPivot()` or `seriesNames()`, you can pass `aliasSeries` in the [pivotConfig](#types-pivot-config)\n * to give each series a unique prefix. This is useful for `blending queries` which use the same measure multiple times.\n *\n * ```js\n * // For the queries\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [\n * {\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month',\n * },\n * ],\n * },\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [\n * {\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month',\n * },\n * ],\n * filters: [\n * {\n * member: 'Stores.read',\n * operator: 'equals',\n * value: ['true'],\n * },\n * ],\n * },\n *\n * // ResultSet.chartPivot({ aliasSeries: ['one', 'two'] }) will return\n * [\n * {\n * x: '2015-01-01T00:00:00',\n * 'one,Stories.count': 27120,\n * 'two,Stories.count': 8933,\n * xValues: ['2015-01-01T00:00:00'],\n * },\n * {\n * x: '2015-02-01T00:00:00',\n * 'one,Stories.count': 25861,\n * 'two,Stories.count': 8344,\n * xValues: ['2015-02-01T00:00:00'],\n * },\n * {\n * x: '2015-03-01T00:00:00',\n * 'one,Stories.count': 29661,\n * 'two,Stories.count': 9023,\n * xValues: ['2015-03-01T00:00:00'],\n * },\n * //...\n * ]\n * ```\n */\n public chartPivot(pivotConfig?: PivotConfig): ChartPivotRow[] {\n const validate = (value: string) => {\n if (this.parseDateMeasures && LocalDateRegex.test(value)) {\n return new Date(value);\n } else if (!Number.isNaN(Number.parseFloat(value))) {\n return Number.parseFloat(value);\n }\n\n return value;\n };\n\n const duplicateMeasures = new Set<string>();\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n const allMeasures = flatten(this.loadResponses.map(({ query }) => query.measures ?? []));\n allMeasures.filter((e, i, a) => a.indexOf(e) !== i).forEach(m => duplicateMeasures.add(m));\n }\n\n return this.pivot(pivotConfig).map(({ xValues, yValuesArray }) => {\n const yValuesMap: Record<string, number | string | Date> = {};\n\n yValuesArray\n .forEach(([yValues, m]: [string[], string], i: number) => {\n yValuesMap[this.axisValuesString(aliasSeries(yValues, i, pivotConfig, duplicateMeasures), ',')] = m && validate(m);\n });\n\n return ({\n x: this.axisValuesString(xValues, ','),\n xValues,\n ...yValuesMap\n } as ChartPivotRow);\n });\n }\n\n /**\n * Returns normalized query result data prepared for visualization in the table format.\n *\n * You can find the examples of using the `pivotConfig` [here](#types-pivot-config)\n *\n * For example:\n * ```js\n * // For the query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.tablePivot() will return\n * [\n * { \"Stories.time\": \"2015-01-01T00:00:00\", \"Stories.count\": 27120 },\n * { \"Stories.time\": \"2015-02-01T00:00:00\", \"Stories.count\": 25861 },\n * { \"Stories.time\": \"2015-03-01T00:00:00\", \"Stories.count\": 29661 },\n * //...\n * ]\n * ```\n * @returns An array of pivoted rows\n */\n public tablePivot(pivotConfig?: PivotConfig): Array<{ [key: string]: string | number | boolean }> {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});\n const isMeasuresPresent = normalizedPivotConfig.x.concat(normalizedPivotConfig.y).includes('measures');\n\n return this.pivot(normalizedPivotConfig).map(({ xValues, yValuesArray }) => fromPairs(\n [\n ...(normalizedPivotConfig.x).map((key, index): [string, string | number] => [\n key,\n xValues[index]\n ]),\n ...(isMeasuresPresent\n ? yValuesArray.map(([yValues, measure]): [string, string | number] => [\n yValues.length ? yValues.join() : 'value',\n measure\n ])\n : [])\n ]\n ));\n }\n\n /**\n * Returns an array of column definitions for `tablePivot`.\n *\n * For example:\n * ```js\n * // For the query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.tableColumns() will return\n * [\n * {\n * key: 'Stories.time',\n * dataIndex: 'Stories.time',\n * title: 'Stories Time',\n * shortTitle: 'Time',\n * type: 'time',\n * format: undefined,\n * },\n * {\n * key: 'Stories.count',\n * dataIndex: 'Stories.count',\n * title: 'Stories Count',\n * shortTitle: 'Count',\n * type: 'count',\n * format: undefined,\n * },\n * //...\n * ]\n * ```\n *\n * In case we want to pivot the table axes\n * ```js\n * // Let's take this query as an example\n * {\n * measures: ['Orders.count'],\n * dimensions: ['Users.country', 'Users.gender']\n * }\n *\n * // and put the dimensions on `y` axis\n * resultSet.tableColumns({\n * x: [],\n * y: ['Users.country', 'Users.gender', 'measures']\n * })\n * ```\n *\n * then `tableColumns` will group the table head and return\n * ```js\n * {\n * key: 'Germany',\n * type: 'string',\n * title: 'Users Country Germany',\n * shortTitle: 'Germany',\n * meta: undefined,\n * format: undefined,\n * children: [\n * {\n * key: 'male',\n * type: 'string',\n * title: 'Users Gender male',\n * shortTitle: 'male',\n * meta: undefined,\n * format: undefined,\n * children: [\n * {\n * // ...\n * dataIndex: 'Germany.male.Orders.count',\n * shortTitle: 'Count',\n * },\n * ],\n * },\n * {\n * // ...\n * shortTitle: 'female',\n * children: [\n * {\n * // ...\n * dataIndex: 'Germany.female.Orders.count',\n * shortTitle: 'Count',\n * },\n * ],\n * },\n * ],\n * },\n * // ...\n * ```\n * @returns An array of columns\n */\n public tableColumns(pivotConfig?: PivotConfig): TableColumn[] {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});\n\n const annotations: QueryAnnotations = this.loadResponses\n .map((r) => r.annotation)\n .reduce<QueryAnnotations>((acc, annotation) => mergeDeepLeft(acc, annotation) as QueryAnnotations,\n {\n dimensions: {},\n measures: {},\n timeDimensions: {},\n segments: {},\n });\n\n const flatMeta = Object.values(annotations).reduce((a, b) => ({ ...a, ...b }), {});\n const schema: Record<string, any> = {};\n\n const extractFields = (key: string) => {\n const { title, shortTitle, type, format, meta } = flatMeta[key] || {};\n\n return {\n key,\n title,\n shortTitle,\n type,\n format,\n meta\n };\n };\n\n const pivot = this.pivot(normalizedPivotConfig);\n\n (pivot[0]?.yValuesArray || []).forEach(([yValues]) => {\n if (yValues.length > 0) {\n let currentItem = schema;\n\n yValues.forEach((value, index) => {\n currentItem[`_${value}`] = {\n key: value,\n memberId: normalizedPivotConfig.y[index] === 'measures'\n ? value\n : normalizedPivotConfig.y[index],\n children: currentItem[`_${value}`]?.children || {}\n };\n\n currentItem = currentItem[`_${value}`].children;\n });\n }\n });\n\n const toColumns = (item: Record<string, any> = {}, path: string[] = []): TableColumn[] => {\n if (Object.keys(item).length === 0) {\n return [];\n }\n\n return Object.values(item).map(({ key, ...currentItem }) => {\n const children = toColumns(currentItem.children, [\n ...path,\n key\n ]);\n\n const { title, shortTitle, ...fields } = extractFields(currentItem.memberId);\n\n const dimensionValue = key !== currentItem.memberId || title == null ? key : '';\n\n if (!children.length) {\n return {\n ...fields,\n key,\n dataIndex: [...path, key].join(),\n title: [title, dimensionValue].join(' ').trim(),\n shortTitle: dimensionValue || shortTitle,\n } as TableColumn;\n }\n\n return {\n ...fields,\n key,\n title: [title, dimensionValue].join(' ').trim(),\n shortTitle: dimensionValue || shortTitle,\n children,\n } as TableColumn;\n });\n };\n\n let otherColumns: TableColumn[] = [];\n\n if (!pivot.length && normalizedPivotConfig.y.includes('measures')) {\n otherColumns = (this.loadResponses[0].query.measures || []).map(\n (key) => ({ ...extractFields(key), dataIndex: key })\n );\n }\n\n // Synthetic column to display the measure value\n if (!normalizedPivotConfig.y.length && normalizedPivotConfig.x.includes('measures')) {\n otherColumns.push({\n key: 'value',\n dataIndex: 'value',\n title: 'Value',\n shortTitle: 'Value',\n type: 'string',\n });\n }\n\n return (normalizedPivotConfig.x).map((key) => {\n if (key === 'measures') {\n return {\n key: 'measures',\n dataIndex: 'measures',\n title: 'Measures',\n shortTitle: 'Measures',\n type: 'string',\n } as TableColumn;\n }\n\n return ({ ...extractFields(key), dataIndex: key });\n })\n .concat(toColumns(schema))\n .concat(otherColumns);\n }\n\n public totalRow(pivotConfig?: PivotConfig): ChartPivotRow {\n return this.chartPivot(pivotConfig)[0];\n }\n\n public categories(pivotConfig?: PivotConfig): ChartPivotRow[] {\n return this.chartPivot(pivotConfig);\n }\n\n /**\n * Returns an array of series objects, containing `key` and `title` parameters.\n * ```js\n * // For query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.seriesNames() will return\n * [\n * {\n * key: 'Stories.count',\n * title: 'Stories Count',\n * shortTitle: 'Count',\n * yValues: ['Stories.count'],\n * },\n * ]\n * ```\n * @returns An array of series names\n */\n public seriesNames(pivotConfig?: PivotConfig): SeriesNamesColumn[] {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);\n const measures = this.loadResponses\n .map(r => r.annotation.measures)\n .reduce((acc, m) => ({ ...acc, ...m }), {});\n\n const seriesNames = unnest(this.loadResponses.map((_, index) => pipe(\n map(this.axisValues(normalizedPivotConfig.y, index)),\n unnest,\n uniq\n )(\n this.timeDimensionBackwardCompatibleData(index)\n )));\n\n const duplicateMeasures = new Set<string>();\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n const allMeasures = flatten(this.loadResponses.map(({ query }) => query.measures ?? []));\n allMeasures.filter((e, i, a) => a.indexOf(e) !== i).forEach(m => duplicateMeasures.add(m));\n }\n\n return seriesNames.map((axisValues, i) => {\n const aliasedAxis = aliasSeries(axisValues, i, normalizedPivotConfig, duplicateMeasures);\n return {\n title: this.axisValuesString(\n normalizedPivotConfig.y.find(d => d === 'measures') ?\n dropLast(1, aliasedAxis).concat(\n measures[\n ResultSet.measureFromAxis(axisValues)\n ].title\n ) :\n aliasedAxis, ', '\n ),\n shortTitle: this.axisValuesString(\n normalizedPivotConfig.y.find(d => d === 'measures') ?\n dropLast(1, aliasedAxis).concat(\n measures[\n ResultSet.measureFromAxis(axisValues)\n ].shortTitle\n ) :\n aliasedAxis, ', '\n ),\n key: this.axisValuesString(aliasedAxis, ','),\n yValues: axisValues\n };\n });\n }\n\n public query(): Query {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].query;\n }\n\n public pivotQuery(): PivotQuery {\n return this.loadResponse.pivotQuery || null;\n }\n\n /**\n * @return the total number of rows if the `total` option was set, when sending the query\n */\n public totalRows(): number | null | undefined {\n return this.loadResponses[0].total;\n }\n\n public rawData(): T[] {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].data;\n }\n\n public annotation(): QueryAnnotations {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].annotation;\n }\n\n private timeDimensionBackwardCompatibleData(resultIndex: number) {\n if (resultIndex === undefined) {\n throw new Error('resultIndex is required');\n }\n\n if (!this.backwardCompatibleData[resultIndex]) {\n const { data, query } = this.loadResponses[resultIndex];\n const timeDimensions = (query.timeDimensions || []).filter(td => Boolean(td.granularity));\n\n this.backwardCompatibleData[resultIndex] = data.map(row => (\n {\n ...row,\n ...(\n fromPairs(Object.keys(row)\n .filter(\n field => {\n const foundTd = timeDimensions.find(d => d.dimension === field);\n return foundTd && !row[ResultSet.timeDimensionMember(foundTd)];\n }\n ).map(field => (\n [ResultSet.timeDimensionMember(timeDimensions.find(d => d.dimension === field)!), row[field]]\n )))\n )\n }\n ));\n }\n\n return this.backwardCompatibleData[resultIndex];\n }\n\n /**\n * Can be used when you need access to the methods that can't be used with some query types (eg `compareDateRangeQuery` or `blendingQuery`)\n * ```js\n * resultSet.decompose().forEach((currentResultSet) => {\n * console.log(currentResultSet.rawData());\n * });\n * ```\n */\n public decompose(): ResultSet<any>[] {\n return this.loadResponses.map((result) => new ResultSet({\n queryType: QUERY_TYPE.REGULAR_QUERY,\n pivotQuery: {\n ...result.query,\n queryType: QUERY_TYPE.REGULAR_QUERY,\n },\n results: [result]\n }, this.options));\n }\n\n /**\n * Can be used to stash the `ResultSet` in a storage and restored later with [deserialize](#result-set-deserialize)\n */\n public serialize(): SerializedResult {\n return {\n loadResponse: clone(this.loadResponse)\n };\n }\n}\n","export type SqlQueryTuple = [string, any[], any?];\n\nexport type SqlData = {\n aliasNameToMember: Record<string, string>;\n cacheKeyQueries: SqlQueryTuple[];\n dataSource: string;\n external: boolean;\n sql: SqlQueryTuple;\n preAggregations: any[];\n rollupMatchResults: any[];\n};\n\nexport type SqlQueryWrapper = { sql: SqlData };\n\nexport default class SqlQuery {\n private readonly sqlQuery: SqlQueryWrapper;\n\n public constructor(sqlQuery: SqlQueryWrapper) {\n this.sqlQuery = sqlQuery;\n }\n\n public rawQuery(): SqlData {\n return this.sqlQuery.sql;\n }\n\n public sql(): string {\n return this.rawQuery().sql[0];\n }\n}\n","import { unnest, fromPairs } from 'ramda';\nimport {\n Cube,\n CubesMap,\n MemberType,\n MetaResponse,\n TCubeMeasure,\n TCubeDimension,\n TCubeMember,\n TCubeMemberByType,\n Query,\n FilterOperator,\n TCubeSegment,\n NotFoundMember,\n} from './types';\nimport { DeeplyReadonly } from './index';\n\nexport interface CubeMemberWrapper<T> {\n cubeName: string;\n cubeTitle: string;\n type: 'view' | 'cube';\n public: boolean;\n members: T[];\n}\n\nexport type AggregatedMembers = {\n measures: CubeMemberWrapper<TCubeMeasure>[];\n dimensions: CubeMemberWrapper<TCubeDimension>[];\n segments: CubeMemberWrapper<TCubeSegment>[];\n timeDimensions: CubeMemberWrapper<TCubeDimension>[];\n};\n\nconst memberMap = (memberArray: any[]) => fromPairs(\n memberArray.map((m) => [m.name, m])\n);\n\nconst operators = {\n string: [\n { name: 'contains', title: 'contains' },\n { name: 'notContains', title: 'does not contain' },\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'set', title: 'is set' },\n { name: 'notSet', title: 'is not set' },\n { name: 'startsWith', title: 'starts with' },\n { name: 'notStartsWith', title: 'does not start with' },\n { name: 'endsWith', title: 'ends with' },\n { name: 'notEndsWith', title: 'does not end with' },\n ],\n number: [\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'set', title: 'is set' },\n { name: 'notSet', title: 'is not set' },\n { name: 'gt', title: '>' },\n { name: 'gte', title: '>=' },\n { name: 'lt', title: '<' },\n { name: 'lte', title: '<=' },\n ],\n time: [\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'inDateRange', title: 'in date range' },\n { name: 'notInDateRange', title: 'not in date range' },\n { name: 'afterDate', title: 'after date' },\n { name: 'afterOrOnDate', title: 'after or on date' },\n { name: 'beforeDate', title: 'before date' },\n { name: 'beforeOrOnDate', title: 'before or on date' },\n ],\n};\n\n/**\n * Contains information about available cubes and it's members.\n */\nexport default class Meta {\n /**\n * Raw meta response\n */\n public readonly meta: MetaResponse;\n\n /**\n * An array of all available cubes with their members\n */\n public readonly cubes: Cube[];\n\n /**\n * A map of all cubes where the key is a cube name\n */\n public readonly cubesMap: CubesMap;\n\n public constructor(metaResponse: MetaResponse) {\n this.meta = metaResponse;\n const { cubes } = this.meta;\n this.cubes = cubes;\n this.cubesMap = fromPairs(\n cubes.map((c) => [\n c.name,\n {\n measures: memberMap(c.measures),\n dimensions: memberMap(c.dimensions),\n segments: memberMap(c.segments),\n },\n ])\n );\n }\n\n /**\n * Get all members of a specific type for a given query.\n * If empty query is provided no filtering is done based on query context and all available members are retrieved.\n * @param _query - context query to provide filtering of members available to add to this query\n * @param memberType\n */\n public membersForQuery(_query: DeeplyReadonly<Query> | null, memberType: MemberType): (TCubeMeasure | TCubeDimension | TCubeMember | TCubeSegment)[] {\n return unnest(this.cubes.map((c) => c[memberType]))\n .sort((a, b) => (a.title > b.title ? 1 : -1));\n }\n\n public membersGroupedByCube() {\n const memberKeys = ['measures', 'dimensions', 'segments', 'timeDimensions'];\n\n return this.cubes.reduce<AggregatedMembers>(\n (memo, cube) => {\n memberKeys.forEach((key) => {\n let members: TCubeMeasure[] | TCubeDimension[] | TCubeSegment[] = [];\n\n // eslint-disable-next-line default-case\n switch (key) {\n case 'measures':\n members = cube.measures || [];\n break;\n case 'dimensions':\n members = cube.dimensions || [];\n break;\n case 'segments':\n members = cube.segments || [];\n break;\n case 'timeDimensions':\n members = cube.dimensions.filter((m) => m.type === 'time') || [];\n break;\n }\n\n // TODO: Convince TS this is working\n // @ts-ignore\n memo[key].push({\n cubeName: cube.name,\n cubeTitle: cube.title,\n type: cube.type,\n public: cube.public,\n members,\n });\n });\n\n return memo;\n },\n {\n measures: [],\n dimensions: [],\n segments: [],\n timeDimensions: [],\n } as AggregatedMembers\n );\n }\n\n /**\n * Get meta information for a cube member\n * meta information contains:\n * ```javascript\n * {\n * name,\n * title,\n * shortTitle,\n * type,\n * description,\n * format\n * }\n * ```\n * @param memberName - Fully qualified member name in a form `Cube.memberName`\n * @param memberType\n * @return An object containing meta information about member\n */\n public resolveMember<T extends MemberType>(\n memberName: string,\n memberType: T | T[]\n ): NotFoundMember | TCubeMemberByType<T> {\n const [cube] = memberName.split('.');\n\n if (!this.cubesMap[cube]) {\n return { title: memberName, error: `Cube not found ${cube} for path '${memberName}'` };\n }\n\n const memberTypes = Array.isArray(memberType) ? memberType : [memberType];\n const member = memberTypes\n .map((type) => this.cubesMap[cube][type] && this.cubesMap[cube][type][memberName])\n .find((m) => m);\n\n if (!member) {\n return {\n title: memberName,\n error: `Path not found '${memberName}'`,\n };\n }\n\n return member as TCubeMemberByType<T>;\n }\n\n public defaultTimeDimensionNameFor(memberName: string): string | null | undefined {\n const [cube] = memberName.split('.');\n if (!this.cubesMap[cube]) {\n return null;\n }\n return Object.keys(this.cubesMap[cube].dimensions || {}).find(\n (d) => this.cubesMap[cube].dimensions[d].type === 'time'\n );\n }\n\n public filterOperatorsForMember(memberName: string, memberType: MemberType | MemberType[]): FilterOperator[] {\n const member = this.resolveMember(memberName, memberType);\n\n if ('error' in member || !('type' in member) || member.type === 'boolean') {\n return operators.string;\n }\n\n return operators[member.type] || operators.string;\n }\n}\n","import { ProgressResponse } from './types';\n\nexport default class ProgressResult {\n private progressResponse: ProgressResponse;\n\n public constructor(progressResponse: ProgressResponse) {\n this.progressResponse = progressResponse;\n }\n\n public stage(): string {\n return this.progressResponse.stage;\n }\n\n public timeElapsed(): number {\n return this.progressResponse.timeElapsed;\n }\n}\n","export async function* responseChunks(res: Response): AsyncIterable<Uint8Array> {\n // eslint-disable-next-line prefer-destructuring\n const body: any = res.body;\n\n if (body && typeof body.getReader === 'function') {\n const reader = body.getReader(); // Browser / Node native fetch\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n if (value) yield value; // Uint8Array\n }\n } finally {\n reader.releaseLock?.();\n }\n return;\n }\n\n // Node.js Readable (node-fetch v2 via cross-fetch)\n if (body && Symbol.asyncIterator in body) {\n for await (const chunk of body as AsyncIterable<Buffer | Uint8Array | string>) {\n if (typeof chunk === 'string') {\n // Convert string chunks to bytes (rare, but safe)\n yield new TextEncoder().encode(chunk);\n } else {\n yield new Uint8Array(chunk);\n }\n }\n return;\n }\n\n throw new Error('Unsupported response body type for streaming');\n}\n","import fetch from 'cross-fetch';\nimport 'url-search-params-polyfill';\nimport { responseChunks } from './streaming';\n\nexport interface ErrorResponse {\n error: string;\n}\n\nexport type TransportOptions = {\n /**\n * [jwt auth token](security)\n */\n authorization?: string;\n /**\n * path to `/cubejs-api/v1`\n */\n apiUrl: string;\n /**\n * custom headers\n */\n headers: Record<string, string>;\n credentials?: 'omit' | 'same-origin' | 'include';\n method?: 'GET' | 'PUT' | 'POST' | 'PATCH';\n /**\n * Fetch timeout in milliseconds. Would be passed as AbortSignal.timeout()\n */\n fetchTimeout?: number;\n /**\n * AbortSignal to cancel requests\n */\n signal?: AbortSignal;\n};\n\nexport interface ITransportResponse<R> {\n subscribe: <CBResult>(\n cb: (\n result: R | ErrorResponse,\n resubscribe: () => Promise<CBResult>\n ) => CBResult\n ) => Promise<CBResult>;\n // Optional, supported in WebSocketTransport\n unsubscribe?: () => Promise<void>;\n}\n\nexport interface ITransportStreamResponse {\n stream(): Promise<AsyncIterable<Uint8Array>>;\n unsubscribe?: () => Promise<void>;\n}\n\nexport interface ITransportStreamParams<T extends Record<string, unknown> = Record<string, unknown>> {\n method?: 'GET' | 'POST' | 'PUT' | 'PATCH';\n fetchTimeout?: number;\n baseRequestId?: string;\n signal?: AbortSignal;\n params?: T;\n}\n\nexport interface ITransport<R> {\n request(\n method: string,\n params: Record<string, unknown>\n ): ITransportResponse<R>;\n requestStream?<T extends Record<string, unknown> = Record<string, unknown>>(\n method: string,\n params: ITransportStreamParams<T>\n ): ITransportStreamResponse;\n authorization: TransportOptions['authorization'];\n}\n\n/**\n * Default transport implementation.\n */\nexport class HttpTransport implements ITransport<Response> {\n public authorization: TransportOptions['authorization'];\n\n protected apiUrl: TransportOptions['apiUrl'];\n\n protected method: TransportOptions['method'];\n\n protected headers: TransportOptions['headers'];\n\n protected credentials: TransportOptions['credentials'];\n\n protected fetchTimeout: number | undefined;\n\n private readonly signal: AbortSignal | undefined;\n\n public constructor({\n authorization,\n apiUrl,\n method,\n headers = {},\n credentials,\n fetchTimeout,\n signal,\n }: Omit<TransportOptions, 'headers'> & {\n headers?: TransportOptions['headers'];\n }) {\n this.authorization = authorization;\n this.apiUrl = apiUrl;\n this.method = method;\n this.headers = headers;\n this.credentials = credentials;\n this.fetchTimeout = fetchTimeout;\n this.signal = signal;\n }\n\n public request(\n apiMethod: string,\n { method, fetchTimeout, baseRequestId, signal, ...params }: any\n ): ITransportResponse<Response> {\n let spanCounter = 1;\n const searchParams = new URLSearchParams(\n params &&\n Object.keys(params)\n .map((k) => ({\n [k]:\n typeof params[k] === 'object'\n ? JSON.stringify(params[k])\n : params[k],\n }))\n .reduce((a, b) => ({ ...a, ...b }), {})\n );\n\n let url = `${this.apiUrl}/${apiMethod}${\n searchParams.toString().length ? `?${searchParams}` : ''\n }`;\n\n const requestMethod =\n method ?? this.method ?? (url.length < 2000 ? 'GET' : 'POST');\n if (requestMethod === 'POST') {\n url = `${this.apiUrl}/${apiMethod}`;\n this.headers['Content-Type'] = 'application/json';\n }\n\n const effectiveFetchTimeout = fetchTimeout ?? this.fetchTimeout;\n const actualSignal =\n signal ||\n this.signal ||\n (effectiveFetchTimeout\n ? AbortSignal.timeout(effectiveFetchTimeout)\n : undefined);\n\n // Currently, all methods make GET requests. If a method makes a request with a body payload,\n // remember to add {'Content-Type': 'application/json'} to the header.\n const runRequest = () => fetch(url, {\n method: requestMethod,\n headers: {\n Authorization: this.authorization,\n 'x-request-id':\n baseRequestId && `${baseRequestId}-span-${spanCounter++}`,\n ...this.headers,\n } as HeadersInit,\n credentials: this.credentials,\n body: requestMethod === 'POST' ? JSON.stringify(params) : null,\n signal: actualSignal,\n });\n\n return {\n /* eslint no-unsafe-finally: off */\n async subscribe(callback) {\n try {\n const result = await runRequest();\n return callback(result, () => this.subscribe(callback));\n } catch (e: any) {\n let errorMessage = 'network Error';\n\n if (e.name === 'AbortError') {\n if (\n actualSignal?.reason === 'TimeoutError' ||\n actualSignal?.reason?.name === 'TimeoutError'\n ) {\n errorMessage = 'timeout';\n } else {\n errorMessage = 'aborted';\n }\n }\n\n const result: ErrorResponse = { error: errorMessage };\n return callback(result, () => this.subscribe(callback));\n }\n },\n };\n }\n\n public requestStream<T extends Record<string, unknown> = Record<string, unknown>>(\n apiMethod: string,\n { method, fetchTimeout, baseRequestId, signal, params }: ITransportStreamParams<T>\n ): ITransportStreamResponse {\n const processedParams: Record<string, string> = {};\n\n // Handle the generic params object\n if (params) {\n Object.keys(params).forEach((k) => {\n const value = params[k];\n if (value !== undefined) {\n processedParams[k] = typeof value === 'object' ? JSON.stringify(value) : String(value);\n }\n });\n }\n\n const searchParams = new URLSearchParams(processedParams);\n\n let url = `${this.apiUrl}/${apiMethod}${\n searchParams.toString().length ? `?${searchParams}` : ''\n }`;\n\n const requestMethod = method ?? this.method ?? 'POST';\n if (requestMethod === 'POST') {\n url = `${this.apiUrl}/${apiMethod}`;\n this.headers['Content-Type'] = 'application/json';\n }\n\n const effectiveFetchTimeout = fetchTimeout ?? this.fetchTimeout;\n\n let controller: AbortController | undefined;\n let actualSignal: AbortSignal | undefined = signal || this.signal;\n\n if (!actualSignal && effectiveFetchTimeout) {\n controller = new AbortController();\n actualSignal = controller.signal;\n setTimeout(() => controller?.abort(), effectiveFetchTimeout);\n }\n\n return {\n stream: async () => {\n const response = await fetch(url, {\n method: requestMethod,\n headers: {\n Authorization: this.authorization,\n 'x-request-id': baseRequestId || 'stream-request',\n ...this.headers,\n } as HeadersInit,\n credentials: this.credentials,\n body: requestMethod === 'POST' ? JSON.stringify(params || {}) : null,\n signal: actualSignal,\n });\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n\n if (!response.body) {\n throw new Error('No response body available for streaming');\n }\n\n return responseChunks(response);\n },\n unsubscribe: async () => {\n if (controller) {\n controller.abort();\n }\n },\n };\n }\n}\n\nexport default HttpTransport;\n","export default class RequestError extends Error {\n public response: any;\n\n public status: number;\n\n public constructor(message: string, response: any, status: number) {\n super(message);\n this.response = response;\n this.status = status;\n }\n}\n","import { v4 as uuidv4 } from 'uuid';\nimport ResultSet from './ResultSet';\nimport SqlQuery from './SqlQuery';\nimport Meta from './Meta';\nimport ProgressResult from './ProgressResult';\nimport HttpTransport, { ErrorResponse, ITransport, TransportOptions } from './HttpTransport';\nimport RequestError from './RequestError';\nimport {\n CacheMode,\n ExtractTimeMembers,\n LoadResponse,\n MetaResponse,\n PivotQuery,\n ProgressResponse,\n Query,\n QueryOrder,\n QueryType,\n TransformedQuery\n} from './types';\n\nexport type LoadMethodCallback<T> = (error: Error | null, resultSet: T) => void;\n\nexport type LoadMethodOptions = {\n /**\n * Key to store the current request's MUTEX inside the `mutexObj`. MUTEX object is used to reject orphaned queries results when new queries are sent. For example: if two queries are sent with the same `mutexKey` only the last one will return results.\n */\n mutexKey?: string;\n /**\n * Object to store MUTEX\n */\n mutexObj?: { [key: string]: any };\n /**\n * Pass `true` to use continuous fetch behavior.\n */\n subscribe?: boolean;\n /**\n * A Cube API instance. If not provided will be taken from `CubeProvider`\n */\n // eslint-disable-next-line no-use-before-define\n cubeApi?: CubeApi;\n /**\n * If enabled, all members of the 'number' type will be automatically converted to numerical values on the client side\n */\n castNumerics?: boolean;\n /**\n * Function that receives `ProgressResult` on each `Continue wait` message.\n */\n progressCallback?(result: ProgressResult): void;\n /**\n * Server-side cache policy for query execution. Does not control client-side caching.\n */\n cache?: CacheMode;\n /**\n * AbortSignal to cancel requests\n */\n signal?: AbortSignal;\n\n /**\n * Client provided request ID, if client wants to track request onb their own\n */\n baseRequestId?: string;\n};\n\nexport type DeeplyReadonly<T> = {\n readonly [K in keyof T]: DeeplyReadonly<T[K]>;\n};\n\nexport type ExtractMembers<T extends DeeplyReadonly<Query>> =\n | (T extends { dimensions: readonly (infer Names)[]; } ? Names : never)\n | (T extends { measures: readonly (infer Names)[]; } ? Names : never)\n | (T extends { timeDimensions: (infer U); } ? ExtractTimeMembers<U> : never);\n\n// If we can't infer any members at all, then return any.\nexport type SingleQueryRecordType<T extends DeeplyReadonly<Query>> = ExtractMembers<T> extends never\n ? any\n : { [K in string & ExtractMembers<T>]: string | number | boolean | null };\n\nexport type QueryArrayRecordType<T extends DeeplyReadonly<Query[]>> =\n T extends readonly [infer First, ...infer Rest]\n ? SingleQueryRecordType<DeeplyReadonly<First>> | QueryArrayRecordType<Rest & DeeplyReadonly<Query[]>>\n : never;\n\nexport type QueryRecordType<T extends DeeplyReadonly<Query | Query[]>> =\n T extends DeeplyReadonly<Query[]> ? QueryArrayRecordType<T> :\n T extends DeeplyReadonly<Query> ? SingleQueryRecordType<T> :\n never;\n\nexport interface UnsubscribeObj {\n /**\n * Allows to stop requests in-flight in long polling or web socket subscribe loops.\n * It doesn't cancel any submitted requests to the underlying databases.\n */\n unsubscribe(): Promise<void>;\n}\n\n/**\n * @deprecated use DryRunResponse\n */\nexport type TDryRunResponse = {\n queryType: QueryType;\n normalizedQueries: Query[];\n pivotQuery: PivotQuery;\n queryOrder: Array<{ [k: string]: QueryOrder }>;\n transformedQueries: TransformedQuery[];\n};\n\nexport type DryRunResponse = {\n queryType: QueryType;\n normalizedQueries: Query[];\n pivotQuery: PivotQuery;\n queryOrder: Array<{ [k: string]: QueryOrder }>;\n transformedQueries: TransformedQuery[];\n};\n\nexport type CubeSqlOptions = LoadMethodOptions & {\n /**\n * Query timeout in milliseconds\n */\n timeout?: number;\n};\n\nexport type CubeSqlSchemaColumn = {\n name: string;\n // eslint-disable-next-line camelcase\n column_type: string;\n};\n\nexport type CubeSqlResult = {\n schema: CubeSqlSchemaColumn[];\n data: (string | number | boolean | null)[][];\n lastRefreshTime?: string;\n};\n\nexport type CubeSqlStreamChunk = {\n type: 'schema';\n schema: CubeSqlSchemaColumn[];\n lastRefreshTime?: string;\n} | {\n type: 'data';\n data: (string | number | boolean | null)[];\n} | {\n type: 'error';\n error: string;\n};\n\ninterface BodyResponse {\n error?: string;\n [key: string]: any;\n}\n\nlet mutexCounter = 0;\n\nconst MUTEX_ERROR = 'Mutex has been changed';\n\nfunction mutexPromise<T>(promise: Promise<T>): Promise<T | null> {\n return promise\n .then((result) => result)\n .catch((error) => {\n if (error !== MUTEX_ERROR) {\n throw error;\n }\n\n return null;\n });\n}\n\nexport type ResponseFormat = 'compact' | 'default' | undefined;\n\nexport type CubeApiOptions = {\n /**\n * URL of your Cube.js Backend. By default, in the development environment it is `http://localhost:4000/cubejs-api/v1`\n */\n apiUrl: string;\n /**\n * Transport implementation to use. [HttpTransport](#http-transport) will be used by default.\n */\n transport?: ITransport<any>;\n method?: TransportOptions['method'];\n headers?: TransportOptions['headers'];\n pollInterval?: number;\n credentials?: TransportOptions['credentials'];\n parseDateMeasures?: boolean;\n resType?: 'default' | 'compact';\n castNumerics?: boolean;\n /**\n * How many network errors would be retried before returning to users. Default to 0.\n */\n networkErrorRetries?: number;\n /**\n * AbortSignal to cancel requests\n */\n signal?: AbortSignal;\n /**\n * Fetch timeout in milliseconds. Would be passed as AbortSignal.timeout()\n */\n fetchTimeout?: number;\n};\n\n/**\n * Main class for accessing Cube API\n */\nclass CubeApi {\n private readonly apiToken: string | (() => Promise<string>) | (CubeApiOptions & any[]) | undefined;\n\n private readonly apiUrl: string;\n\n private readonly method: TransportOptions['method'];\n\n private readonly headers: TransportOptions['headers'];\n\n private readonly credentials: TransportOptions['credentials'];\n\n protected readonly transport: ITransport<any>;\n\n private readonly pollInterval: number;\n\n private readonly parseDateMeasures: boolean | undefined;\n\n private readonly castNumerics: boolean;\n\n private readonly networkErrorRetries: number;\n\n private updateAuthorizationPromise: Promise<any> | null;\n\n public constructor(apiToken: string | (() => Promise<string>) | undefined, options: CubeApiOptions);\n\n public constructor(options: CubeApiOptions);\n\n /**\n * Creates an instance of the `CubeApi`. The API entry point.\n *\n * ```js\n * import cube from '@cubejs-client/core';\n * const cubeApi = cube(\n * 'CUBE-API-TOKEN',\n * { apiUrl: 'http://localhost:4000/cubejs-api/v1' }\n * );\n * ```\n *\n * You can also pass an async function or a promise that will resolve to the API token\n *\n * ```js\n * import cube from '@cubejs-client/core';\n * const cubeApi = cube(\n * async () => await Auth.getJwtToken(),\n * { apiUrl: 'http://localhost:4000/cubejs-api/v1' }\n * );\n * ```\n */\n public constructor(\n apiToken: string | (() => Promise<string>) | undefined | CubeApiOptions,\n options?: CubeApiOptions\n ) {\n if (apiToken && !Array.isArray(apiToken) && typeof apiToken === 'object') {\n options = apiToken;\n apiToken = undefined;\n }\n\n if (!options || (!options.transport && !options.apiUrl)) {\n throw new Error('The `apiUrl` option is required');\n }\n\n this.apiToken = apiToken;\n this.apiUrl = options.apiUrl;\n this.method = options.method;\n this.headers = options.headers || {};\n this.credentials = options.credentials;\n\n this.transport = options.transport || new HttpTransport({\n authorization: typeof apiToken === 'string' ? apiToken : undefined,\n apiUrl: this.apiUrl,\n method: this.method,\n headers: this.headers,\n credentials: this.credentials,\n fetchTimeout: options.fetchTimeout,\n signal: options.signal\n });\n\n this.pollInterval = options.pollInterval || 5;\n this.parseDateMeasures = options.parseDateMeasures;\n this.castNumerics = typeof options.castNumerics === 'boolean' ? options.castNumerics : false;\n this.networkErrorRetries = options.networkErrorRetries || 0;\n\n this.updateAuthorizationPromise = null;\n }\n\n protected request(method: string, params?: any) {\n return this.transport.request(method, {\n ...params,\n baseRequestId: params?.baseRequestId || uuidv4(),\n });\n }\n\n private loadMethod(request: CallableFunction, toResult: CallableFunction, options?: LoadMethodOptions, callback?: CallableFunction) {\n const mutexValue = ++mutexCounter;\n if (typeof options === 'function' && !callback) {\n callback = options;\n options = undefined;\n }\n\n options = options || {};\n\n const mutexKey = options.mutexKey || 'default';\n if (options.mutexObj) {\n options.mutexObj[mutexKey] = mutexValue;\n }\n\n const requestPromise = this\n .updateTransportAuthorization()\n .then(() => request());\n\n let skipAuthorizationUpdate = true;\n let unsubscribed = false;\n\n const checkMutex = async () => {\n const requestInstance = await requestPromise;\n\n if (options &&\n options.mutexObj &&\n options.mutexObj[mutexKey] !== mutexValue\n ) {\n unsubscribed = true;\n if (requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n throw MUTEX_ERROR;\n }\n };\n\n let networkRetries = this.networkErrorRetries;\n\n const loadImpl = async (response: Response | ErrorResponse, next: CallableFunction) => {\n const requestInstance = await requestPromise;\n\n const subscribeNext = async () => {\n if (options?.subscribe && !unsubscribed) {\n if (requestInstance.unsubscribe) {\n return next();\n } else {\n await new Promise<void>(resolve => setTimeout(() => resolve(), this.pollInterval * 1000));\n return next();\n }\n }\n return null;\n };\n\n const continueWait = async (wait: boolean = false) => {\n if (!unsubscribed) {\n if (wait) {\n await new Promise<void>(resolve => setTimeout(() => resolve(), this.pollInterval * 1000));\n }\n return next();\n }\n return null;\n };\n\n if (options?.subscribe && !skipAuthorizationUpdate) {\n await this.updateTransportAuthorization();\n }\n\n skipAuthorizationUpdate = false;\n\n if (('status' in response && response.status === 502) ||\n ('error' in response && response.error?.toLowerCase() === 'network error') &&\n --networkRetries >= 0\n ) {\n await checkMutex();\n return continueWait(true);\n }\n\n // From here we're sure that response is only fetch Response\n response = (response as Response);\n let body: BodyResponse = {};\n let text = '';\n try {\n text = await response.text();\n body = JSON.parse(text);\n } catch (_) {\n body.error = text;\n }\n\n if (body.error === 'Continue wait') {\n await checkMutex();\n if (options?.progressCallback) {\n options.progressCallback(new ProgressResult(body as ProgressResponse));\n }\n return continueWait();\n }\n\n if (response.status !== 200) {\n await checkMutex();\n if (!options?.subscribe && requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n\n const error = new RequestError(body.error || (response as any).error || '', body, response.status);\n if (callback) {\n callback(error);\n } else {\n throw error;\n }\n\n return subscribeNext();\n }\n await checkMutex();\n if (!options?.subscribe && requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n const result = toResult(body);\n if (callback) {\n callback(null, result);\n } else {\n return result;\n }\n\n return subscribeNext();\n };\n\n const promise: Promise<any> = requestPromise\n .then(requestInstance => mutexPromise(requestInstance.subscribe(loadImpl)));\n\n if (callback) {\n return {\n unsubscribe: async () => {\n const requestInstance = await requestPromise;\n\n unsubscribed = true;\n if (requestInstance.unsubscribe) {\n return requestInstance.unsubscribe();\n }\n return null;\n }\n };\n } else {\n return promise;\n }\n }\n\n private async updateTransportAuthorization() {\n if (this.updateAuthorizationPromise) {\n await this.updateAuthorizationPromise;\n return;\n }\n\n const tokenFetcher = this.apiToken;\n\n if (typeof tokenFetcher === 'function') {\n const promise = (async () => {\n try {\n const token = await tokenFetcher();\n\n if (this.transport.authorization !== token) {\n this.transport.authorization = token;\n }\n } finally {\n this.updateAuthorizationPromise = null;\n }\n })();\n\n this.updateAuthorizationPromise = promise;\n await promise;\n }\n }\n\n /**\n * Add system properties to a query object.\n */\n private patchQueryInternal(query: DeeplyReadonly<Query>, responseFormat: ResponseFormat): DeeplyReadonly<Query> {\n if (\n responseFormat === 'compact' &&\n query.responseFormat !== 'compact'\n ) {\n return {\n ...query,\n responseFormat: 'compact',\n };\n } else {\n return query;\n }\n }\n\n /**\n * Process result fetched from the gateway#load method according\n * to the network protocol.\n */\n protected loadResponseInternal(response: LoadResponse<any>, options: LoadMethodOptions | null = {}): ResultSet<any> {\n if (\n response.results.length\n ) {\n if (options?.castNumerics) {\n response.results.forEach((result) => {\n const numericMembers = Object.entries({\n ...result.annotation.measures,\n ...result.annotation.dimensions,\n }).reduce<string[]>((acc, [k, v]) => {\n if (v.type === 'number') {\n acc.push(k);\n }\n return acc;\n }, []);\n\n result.data = result.data.map((row) => {\n numericMembers.forEach((key) => {\n if (row[key] != null) {\n row[key] = Number(row[key]);\n }\n });\n\n return row;\n });\n });\n }\n\n if (response.results[0].query.responseFormat &&\n response.results[0].query.responseFormat === 'compact') {\n response.results.forEach((result, j) => {\n const data: Record<string, any>[] = [];\n const { dataset, members } = result.data as unknown as { dataset: any[]; members: string[] };\n dataset.forEach((r) => {\n const row: Record<string, any> = {};\n members.forEach((m, i) => {\n row[m] = r[i];\n });\n data.push(row);\n });\n response.results[j].data = data;\n });\n }\n }\n\n return new ResultSet(response, {\n parseDateMeasures: this.parseDateMeasures\n });\n }\n\n public load<QueryType extends DeeplyReadonly<Query | Query[]>>(\n query: QueryType,\n options?: LoadMethodOptions,\n ): Promise<ResultSet<QueryRecordType<QueryType>>>;\n\n public load<QueryType extends DeeplyReadonly<Query | Query[]>>(\n query: QueryType,\n options?: LoadMethodOptions,\n callback?: LoadMethodCallback<ResultSet<QueryRecordType<QueryType>>>,\n ): UnsubscribeObj;\n\n public load<QueryType extends DeeplyReadonly<Query | Query[]>>(\n query: QueryType,\n options?: LoadMethodOptions,\n callback?: LoadMethodCallback<ResultSet<any>>,\n responseFormat?: string\n ): Promise<ResultSet<QueryRecordType<QueryType>>>;\n\n /**\n * Fetch data for the passed `query`.\n *\n * ```js\n * import cube from '@cubejs-client/core';\n * import Chart from 'chart.js';\n * import chartjsConfig from './toChartjsData';\n *\n * const cubeApi = cube('CUBEJS_TOKEN');\n *\n * const resultSet = await cubeApi.load({\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * });\n *\n * const context = document.getElementById('myChart');\n * new Chart(context, chartjsConfig(resultSet));\n * ```\n * @param query - [Query object](/product/apis-integrations/rest-api/query-format)\n * @param options\n * @param callback\n * @param responseFormat\n */\n public load<QueryType extends DeeplyReadonly<Query | Query[]>>(query: QueryType, options?: LoadMethodOptions, callback?: CallableFunction, responseFormat: ResponseFormat = 'default') {\n [query, options] = this.prepareQueryOptions(query, options, responseFormat);\n\n const params: Record<string, unknown> = {\n query,\n queryType: 'multi',\n signal: options?.signal,\n baseRequestId: options?.baseRequestId,\n };\n\n if (options?.cache) {\n params.cache = options.cache;\n }\n\n return this.loadMethod(\n () => this.request('load', params),\n (response: any) => this.loadResponseInternal(response, options),\n options,\n callback\n );\n }\n\n private prepareQueryOptions<QueryType extends DeeplyReadonly<Query | Query[]>>(query: QueryType, options?: LoadMethodOptions | null, responseFormat: ResponseFormat = 'default'): [query: QueryType, options: LoadMethodOptions] {\n options = {\n castNumerics: this.castNumerics,\n ...options\n };\n\n if (responseFormat === 'compact') {\n if (Array.isArray(query)) {\n const patched = query.map((q) => this.patchQueryInternal(q, 'compact'));\n return [patched as unknown as QueryType, options];\n } else {\n const patched = this.patchQueryInternal(query as DeeplyReadonly<Query>, 'compact');\n return [patched as QueryType, options];\n }\n }\n\n return [query, options];\n }\n\n /**\n * Allows you to fetch data and receive updates over time. See [Real-Time Data Fetch](/product/apis-integrations/rest-api/real-time-data-fetch)\n *\n * ```js\n * // Subscribe to a query's updates\n * const subscription = await cubeApi.subscribe(\n * {\n * measures: ['Logs.count'],\n * timeDimensions: [\n * {\n * dimension: 'Logs.time',\n * granularity: 'hour',\n * dateRange: 'last 1440 minutes',\n * },\n * ],\n * },\n * options,\n * (error, resultSet) => {\n * if (!error) {\n * // handle the update\n * }\n * }\n * );\n *\n * // Unsubscribe from a query's updates\n * subscription.unsubscribe();\n * ```\n */\n public subscribe<QueryType extends DeeplyReadonly<Query | Query[]>>(\n query: QueryType,\n options: LoadMethodOptions | null,\n callback: LoadMethodCallback<ResultSet<QueryRecordType<QueryType>>>,\n responseFormat: ResponseFormat = 'default'\n ): UnsubscribeObj {\n [query, options] = this.prepareQueryOptions(query, options, responseFormat);\n return this.loadMethod(\n () => this.request('subscribe', {\n query,\n queryType: 'multi',\n signal: options?.signal,\n baseRequestId: options?.baseRequestId,\n }),\n (response: any) => this.loadResponseInternal(response, options),\n { ...options, subscribe: true },\n callback\n ) as UnsubscribeObj;\n }\n\n public sql(query: DeeplyReadonly<Query | Query[]>, options?: LoadMethodOptions): Promise<SqlQuery>;\n\n public sql(query: DeeplyReadonly<Query | Query[]>, options?: LoadMethodOptions, callback?: LoadMethodCallback<SqlQuery>): UnsubscribeObj;\n\n /**\n * Get generated SQL string for the given `query`.\n */\n public sql(query: DeeplyReadonly<Query | Query[]>, options?: LoadMethodOptions, callback?: LoadMethodCallback<SqlQuery>): Promise<SqlQuery> | UnsubscribeObj {\n return this.loadMethod(\n () => this.request('sql', {\n query,\n signal: options?.signal,\n baseRequestId: options?.baseRequestId,\n }),\n (response: any) => (Array.isArray(response) ? response.map((body) => new SqlQuery(body)) : new SqlQuery(response)),\n options,\n callback\n );\n }\n\n public meta(options?: LoadMethodOptions): Promise<Meta>;\n\n public meta(options?: LoadMethodOptions, callback?: LoadMethodCallback<Meta>): UnsubscribeObj;\n\n /**\n * Get meta description of cubes available for querying.\n */\n public meta(options?: LoadMethodOptions, callback?: LoadMethodCallback<Meta>): Promise<Meta> | UnsubscribeObj {\n return this.loadMethod(\n () => this.request('meta', {\n signal: options?.signal,\n baseRequestId: options?.baseRequestId,\n }),\n (body: MetaResponse) => new Meta(body),\n options,\n callback\n );\n }\n\n public dryRun(query: DeeplyReadonly<Query | Query[]>, options?: LoadMethodOptions): Promise<DryRunResponse>;\n\n public dryRun(query: DeeplyReadonly<Query | Query[]>, options: LoadMethodOptions, callback?: LoadMethodCallback<DryRunResponse>): UnsubscribeObj;\n\n /**\n * Get query related meta without query execution\n */\n public dryRun(query: DeeplyReadonly<Query | Query[]>, options?: LoadMethodOptions, callback?: LoadMethodCallback<DryRunResponse>): Promise<DryRunResponse> | UnsubscribeObj {\n return this.loadMethod(\n () => this.request('dry-run', {\n query,\n signal: options?.signal,\n baseRequestId: options?.baseRequestId,\n }),\n (response: DryRunResponse) => response,\n options,\n callback\n );\n }\n\n public cubeSql(sqlQuery: string, options?: CubeSqlOptions): Promise<CubeSqlResult>;\n\n public cubeSql(sqlQuery: string, options?: CubeSqlOptions, callback?: LoadMethodCallback<CubeSqlResult>): UnsubscribeObj;\n\n /**\n * Execute a Cube SQL query against Cube SQL interface and return the results.\n */\n public cubeSql(sqlQuery: string, options?: CubeSqlOptions, callback?: LoadMethodCallback<CubeSqlResult>): Promise<CubeSqlResult> | UnsubscribeObj {\n return this.loadMethod(\n () => {\n const cubesqlParams: Record<string, unknown> = {\n query: sqlQuery,\n method: 'POST',\n signal: options?.signal,\n fetchTimeout: options?.timeout,\n baseRequestId: options?.baseRequestId,\n };\n\n if (options?.cache) {\n cubesqlParams.cache = options.cache;\n }\n\n const request = this.request('cubesql', cubesqlParams);\n\n return request;\n },\n (response: any) => {\n // TODO: The response is sending both errors and successful results as `error`\n if (!response || !response.error) {\n throw new Error('Invalid response format');\n }\n\n // Check if this is a timeout or abort error from transport\n if (response.error === 'timeout') {\n const timeoutMs = options?.timeout || 5 * 60 * 1000;\n throw new Error(`CubeSQL query timed out after ${timeoutMs}ms`);\n }\n\n if (response.error === 'aborted') {\n throw new Error('CubeSQL query was aborted');\n }\n\n const [schema, ...data] = response.error.split('\\n');\n\n try {\n const parsedSchema = JSON.parse(schema);\n return {\n schema: parsedSchema.schema,\n data: data\n .filter((d: string) => d.trim().length)\n .map((d: string) => JSON.parse(d).data)\n .reduce((a: any, b: any) => a.concat(b), []),\n ...(parsedSchema.lastRefreshTime ? { lastRefreshTime: parsedSchema.lastRefreshTime } : {}),\n };\n } catch (err) {\n throw new Error(response.error);\n }\n },\n options,\n callback\n );\n }\n\n /**\n * Execute a Cube SQL query against Cube SQL interface and return streaming results as an async generator.\n * The server returns JSONL (JSON Lines) format with schema first, then data rows.\n */\n public async* cubeSqlStream(sqlQuery: string, options?: CubeSqlOptions): AsyncGenerator<CubeSqlStreamChunk> {\n if (!this.transport.requestStream) {\n throw new Error('Transport does not support streaming');\n }\n\n const streamResponse = this.transport.requestStream('cubesql', {\n method: 'POST',\n signal: options?.signal,\n fetchTimeout: options?.timeout,\n baseRequestId: uuidv4(),\n params: {\n query: sqlQuery,\n cache: options?.cache\n }\n });\n\n const decoder = new TextDecoder();\n let buffer = '';\n\n try {\n const stream = await streamResponse.stream();\n\n for await (const chunk of stream) {\n buffer += decoder.decode(chunk, { stream: true });\n\n const lines = buffer.split('\\n');\n buffer = lines.pop() || '';\n\n for (const line of lines) {\n if (line.trim()) {\n try {\n const parsed = JSON.parse(line);\n\n if (parsed.schema) {\n yield {\n type: 'schema' as const,\n schema: parsed.schema,\n ...(parsed.lastRefreshTime ? { lastRefreshTime: parsed.lastRefreshTime } : {}),\n };\n } else if (parsed.data) {\n yield {\n type: 'data' as const,\n data: parsed.data\n };\n } else if (parsed.error) {\n yield {\n type: 'error' as const,\n error: parsed.error\n };\n }\n } catch (parseError) {\n yield {\n type: 'error' as const,\n error: `Failed to parse JSON line: ${line}`\n };\n }\n }\n }\n }\n\n if (buffer.trim()) {\n try {\n const parsed = JSON.parse(buffer);\n\n if (parsed.schema) {\n yield {\n type: 'schema' as const,\n schema: parsed.schema,\n ...(parsed.lastRefreshTime ? { lastRefreshTime: parsed.lastRefreshTime } : {}),\n };\n } else if (parsed.data) {\n yield {\n type: 'data' as const,\n data: parsed.data\n };\n } else if (parsed.error) {\n yield {\n type: 'error' as const,\n error: parsed.error\n };\n }\n } catch (parseError) {\n yield {\n type: 'error' as const,\n error: `Failed to parse remaining JSON: ${buffer}`\n };\n }\n }\n } catch (error: any) {\n if (error.name === 'AbortError') {\n throw new Error('aborted');\n }\n throw error;\n } finally {\n if (streamResponse.unsubscribe) {\n await streamResponse.unsubscribe();\n }\n }\n }\n}\n\nexport default (apiToken: string | (() => Promise<string>), options: CubeApiOptions) => new CubeApi(apiToken, options);\n\nexport { CubeApi };\nexport { default as Meta } from './Meta';\nexport { default as SqlQuery } from './SqlQuery';\nexport { default as RequestError } from './RequestError';\nexport { default as ProgressResult } from './ProgressResult';\nexport { default as ResultSet } from './ResultSet';\nexport * from './HttpTransport';\nexport * from './utils';\nexport * from './time';\nexport * from './types';\n","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","cubeInternalLocale","customLocale","_objectSpread","en","name","weekStart","Ls","GRANULARITIES","undefined","title","DEFAULT_GRANULARITY","internalDayjs","apply","arguments","locale","TIME_SERIES","day","range","by","map","d","format","month","snapTo","year","hour","minute","second","week","startOf","quarter","isPredefinedGranularity","granularity","DateRegex","LocalDateRegex","parseSqlInterval","intervalStr","interval","parts","split","i","length","value","parseInt","unit","singularUnit","endsWith","slice","addInterval","date","res","clone","Object","entries","forEach","_ref","_ref2","_slicedToArray","key","add","subtractInterval","_ref3","_ref4","subtract","alignToOrigin","startDate","origin","alignedDate","intervalOp","isIntervalNegative","offsetDate","isBefore","isAfter","isSame","dayRange","from","to","annotations","results","start","end","push","_customGranularity","customGranularity","_i","_Object$keys","keys","concat","intervalParsed","intervalStart","offset","intervalEnd","endOf","timeSeriesFromCustomInterval","alignedStart","dates","diffTimeUnitForInterval","test","granularityOrder","minGranularityForIntervals","i1","i2","g1","g2","g1pos","indexOf","g2pos","granularityFor","dateStr","dayjsDate","hours","minutes","seconds","milliseconds","millisecond","weekDay","isoWeekday","removeEmptyQueryFields","_query","query","fromPairs","toPairs","flatMap","includes","Array","isArray","validateQuery","filters","filter","f","timeDimensions","td","dateRange","areQueriesEqual","query1","query2","equals","order","defaultOrder","find","_defineProperty","dimension","measures","dimensions","defaultHeuristics","newState","oldQuery","options","_clone","props","_objectWithoutProperties","_excluded","meta","sessionGranularity","state","shouldApplyHeuristicOrder","pivotConfig","newQuery","_ref6","_ref7","defaultTimeDimension","defaultTimeDimensionNameFor","chartType","newChartType","_ref8","_ref9","_ref0","_ref1","isQueryPresent","every","q","_q$measures","_q$dimensions","_q$timeDimensions","movePivotItem","sourceIndex","destinationIndex","sourceAxis","destinationAxis","nextPivotConfig","x","_toConsumableArray","y","id","lastIndex","splice","moveItemInArray","list","result","_result$splice","_result$splice2","removed","flattenFilters","reduce","memo","or","and","getQueryMembers","members","Set","member","getOrderMembersFromOrder","orderMembers","ids","indexedOrderMembers","indexBy","prop","nextOrderMembers","_ref10","_ref11","memberId","currentOrder","has","aliasSeries","values","index","_pivotConfig$aliasSer","duplicateMeasures","nonNullValues","groupByToPairs","groupByToPairsImpl","keyFn","acc","Map","data","row","set","get","unnest","arr","subArr","element","QUERY_TYPE","REGULAR_QUERY","COMPARE_DATE_RANGE_QUERY","BLENDING_QUERY","ResultSet","loadResponse","_classCallCheck","queryType","loadResponses","pivotQuery","Error","parseDateMeasures","backwardCompatibleData","_createClass","drillDown","drillDownLocator","_drillDownLocator$xVa","_drillDownLocator$yVa","_measures$measureName","_measures$measureName2","xValues","yValues","normalizedPivotConfig","normalizePivotConfig","currentIndex","_this$query","_this$query$filters","parentFilters","_this$query$segments","segments","_this$loadResponses$","annotation","timeDimensionsAnnotation","measureName","_Object$keys2","drillMembers","operator","_ref5","_member$split","_member$split2","cubeName","_query$timeDimensions","originalTimeDimension","_originalTimeDimensio","originalStart","originalEnd","join","dt","toString","drillMembersGrouped","timezone","series","_this","seriesNames","shortTitle","chartPivot","obj","axisValues","axis","resultIndex","measure","val","axisValuesString","delimiter","formatValue","v","getNormalizedPivotConfig","timeSeries","timeDimension","timeDimensionMember","rawRows","timeDimensionBackwardCompatibleData","Boolean","minBy","toDate","maxBy","padToDay","match","_dateRange","_dateRange2","pivot","_this2","pivotImpl","groupByXAxis","measureValue","_row$measure","fillWithValue","fillMissingDates","rows","_series$resultIndex$m","_series$resultIndex","byXValues","groupBy","xGrouped","pipe","yValuesMap","_ref12","_ref13","_ref14","allYValues","measureOnX","_ref15","_ref16","yGrouped","_ref17","yValuesArray","measureFromAxis","pivots","_","mergePivots","joinDateRange","minLengthPivot","current","_pivot$index","_this3","validate","Date","Number","isNaN","parseFloat","allMeasures","flatten","_ref18","_query$measures","e","a","m","_ref19","_ref20","_ref21","tablePivot","isMeasuresPresent","_ref22","_ref23","_ref24","tableColumns","_pivot$","r","mergeDeepLeft","flatMeta","b","schema","extractFields","_ref25","type","_ref26","_ref27","currentItem","_currentItem","children","toColumns","item","path","_ref28","_excluded2","_extractFields","fields","_excluded3","dimensionValue","dataIndex","trim","otherColumns","totalRow","categories","_this4","uniq","_ref29","_query$measures2","aliasedAxis","dropLast","totalRows","total","rawData","_this$loadResponses$r","field","foundTd","decompose","_this5","serialize","deserialize","defaultPivotConfig","_ref30","_ref30$measures","_ref30$dimensions","substituteTimeDimensionMembers","subDim","allIncludedDimensions","allDimensions","dimensionFilter","unshift","SqlQuery","sqlQuery","rawQuery","sql","memberMap","memberArray","operators","string","number","time","Meta","metaResponse","cubes","cubesMap","c","membersForQuery","memberType","sort","membersGroupedByCube","memberKeys","cube","cubeTitle","resolveMember","memberName","_memberName$split","_memberName$split2","error","memberTypes","_memberName$split3","_memberName$split4","filterOperatorsForMember","ProgressResult","progressResponse","stage","timeElapsed","responseChunks","_x","_responseChunks","_wrapAsyncGenerator","_regeneratorRuntime","mark","_callee","body","reader","_yield$_awaitAsyncGen","done","_reader$releaseLock","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_step","chunk","_t","wrap","_context","prev","next","getReader","_awaitAsyncGenerator","read","sent","abrupt","releaseLock","call","finish","Symbol","asyncIterator","_asyncIterator","TextEncoder","encode","Uint8Array","stop","HttpTransport","authorization","apiUrl","method","_ref$headers","headers","credentials","fetchTimeout","signal","request","apiMethod","baseRequestId","params","spanCounter","searchParams","URLSearchParams","k","_typeof","JSON","stringify","url","requestMethod","effectiveFetchTimeout","actualSignal","AbortSignal","timeout","runRequest","fetch","Authorization","subscribe","callback","_asyncToGenerator","errorMessage","_actualSignal$reason","_result","reason","requestStream","processedParams","String","controller","AbortController","setTimeout","_controller","abort","stream","_stream","_callee2","response","_context2","ok","status","statusText","unsubscribe","_unsubscribe","_callee3","_context3","RequestError","_Error","message","_callSuper","_inherits","_wrapNativeSuper","mutexCounter","MUTEX_ERROR","mutexPromise","promise","then","CubeApi","apiToken","transport","pollInterval","castNumerics","networkErrorRetries","updateAuthorizationPromise","uuidv4","loadMethod","toResult","mutexValue","mutexKey","mutexObj","requestPromise","updateTransportAuthorization","skipAuthorizationUpdate","unsubscribed","checkMutex","requestInstance","networkRetries","loadImpl","_callee4","_options2","_response$error","_options5","subscribeNext","continueWait","text","_options3","_options4","_error","_context4","_options","Promise","resolve","wait","_args3","toLowerCase","parse","progressCallback","_x2","_callee5","_context5","_updateTransportAuthorization","_callee7","tokenFetcher","_context7","_callee6","token","_context6","patchQueryInternal","responseFormat","loadResponseInternal","numericMembers","j","dataset","load","_options6","_options7","_options8","_this$prepareQueryOpt","prepareQueryOptions","_this$prepareQueryOpt2","cache","patched","_this6","_this$prepareQueryOpt3","_this$prepareQueryOpt4","_options9","_options0","_this7","_this8","dryRun","_this9","cubeSql","_this0","cubesqlParams","timeoutMs","_response$error$split","_response$error$split2","_toArray","_arrayLikeToArray","parsedSchema","lastRefreshTime","err","cubeSqlStream","_callee8","streamResponse","decoder","buffer","lines","_iterator2","_step2","line","parsed","_parsed","_t2","_t3","_t4","_t5","_t6","_context8","TextDecoder","decode","pop","_createForOfIteratorHelper","s","n","cubeAll","clientCoreExports"],"mappings":"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"}