From 92e2ea8eba62448b7dc4ca560838637482d032c8 Mon Sep 17 00:00:00 2001 From: Hassan Khan Date: Mon, 20 Jan 2020 01:14:04 +0000 Subject: [PATCH] fix(@cubejs-client/core): improve types Fixes #350 --- packages/cubejs-client-core/dist/index.d.ts | 65 +++++++++++++++------ 1 file changed, 46 insertions(+), 19 deletions(-) diff --git a/packages/cubejs-client-core/dist/index.d.ts b/packages/cubejs-client-core/dist/index.d.ts index a7911d8bd0704..0ff963a3879f7 100644 --- a/packages/cubejs-client-core/dist/index.d.ts +++ b/packages/cubejs-client-core/dist/index.d.ts @@ -9,10 +9,16 @@ export type CubeJSApiOptions = { transport?: TransportInterface; }; -export enum QueryOrderOptions { - ASC = 'asc', - DESC = 'desc', -} +export type LoadMethodOptions = { + mutexKey?: string; + mutexObj?: {}; + progressCallback(result: ProgressResult): void; + subscribe?: boolean; +}; + +export type LoadMethodCallback = (error: Error | null, resultSet: ResultSet) => void; + +export type QueryOrder = 'asc' | 'desc'; export type Annotation = { title: string; @@ -27,29 +33,38 @@ export type QueryAnnotations = { timeDimensions: Record; }; -export type LoadResponse = { +export type LoadResponse = { annotation: QueryAnnotations; lastRefreshTime: string; query: Query; - data: any[]; + data: T[]; }; export type PivotConfig = { x?: string[]; y?: string[]; - fillMissingDates: boolean | null; + fillMissingDates?: boolean | null; }; +export type Column = { + key: string; + title: string; +} + export class ResultSet { static measureFromAxis(axisValues: string[]): string; - loadResponse: LoadResponse; + loadResponse: LoadResponse; - new(loadResponse: LoadResponse): ResultSet; + new(loadResponse: LoadResponse): ResultSet; - series(pivotConfig: PivotConfig): T[]; - chartPivot(pivotConfig: PivotConfig): T[]; - tablePivot(pivotConfig: PivotConfig): T[]; + series(pivotConfig?: PivotConfig): T[]; + seriesNames(pivotConfig?: PivotConfig): Column[]; + + chartPivot(pivotConfig?: PivotConfig): T[]; + + tablePivot(pivotConfig?: PivotConfig): T[]; + tableColumns(pivotConfig?: PivotConfig): Column[]; } export type Filter = { @@ -82,24 +97,36 @@ export type Query = { limit?: number; offset?: number; order?: { - [key: string]: QueryOrderOptions; + [key: string]: QueryOrder; }; timezone?: string; renewQuery?: boolean; ungrouped?: boolean; }; +export type ProgressResponse = { + stage: string; + timeElapsed: number; +} + +export class ProgressResult { + new(progressResponse: ProgressResponse): ProgressResult; + + stage(): string; + timeElapsed(): string; +} + export class CubejsApi { new(apiToken: string, options: CubeJSApiOptions): CubejsApi; - load(query: Query, options, callback): void; - load(query: Query, options): Promise; + load(query: Query, options?: LoadMethodOptions, callback?: LoadMethodCallback): void; + load(query: Query, options?: LoadMethodOptions): Promise; - sql(query: Query, options, callback): void; - sql(query: Query, options): Promise; + sql(query: Query, options?: LoadMethodOptions, callback?: LoadMethodCallback): void; + sql(query: Query, options?: LoadMethodOptions): Promise; - meta(options, callback): void; - meta(options): Promise; + meta(options?: LoadMethodOptions, callback?: LoadMethodCallback): void; + meta(options?: LoadMethodOptions): Promise; } declare function cubejs(