Skip to content

Commit

Permalink
feat(@cubejs-client/core): add types
Browse files Browse the repository at this point in the history
  • Loading branch information
hassankhan committed Dec 31, 2019
1 parent 4453757 commit abdf089
Show file tree
Hide file tree
Showing 2 changed files with 111 additions and 0 deletions.
110 changes: 110 additions & 0 deletions packages/cubejs-client-core/dist/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
export interface TransportInterface {
request(method: string, params: any): () => Promise<void>;
}

export type CubeJSApiOptions = {
apiUrl: string;
headers?: Record<string, string>;
pollInterval?: number;
transport?: TransportInterface;
};

export enum QueryOrderOptions {
ASC = 'asc',
DESC = 'desc',
}

export type Annotation = {
title: string;
shortTitle: string;
type: string;
format?: 'currency' | 'percentage';
};

export type QueryAnnotations = {
dimensions: Record<string, Annotation>;
measures: Record<string, Annotation>;
timeDimensions: Record<string, Annotation>;
};

export type LoadResponse = {
annotation: QueryAnnotations;
lastRefreshTime: string;
query: Query;
data: any[];
};

export type PivotConfig = {
x?: string[];
y?: string[];
fillMissingDates: boolean | null;
};

export class ResultSet<T extends {} = {}> {
static measureFromAxis(axisValues: string[]): string;

loadResponse: LoadResponse;

new(loadResponse: LoadResponse): ResultSet;

series(pivotConfig: PivotConfig): T[];
chartPivot(pivotConfig: PivotConfig): T[];
tablePivot(pivotConfig: PivotConfig): T[];
}

export type Filter = {
dimension?: string;
member?: string;
operator: string;
values?: string[];
};

export enum TimeDimensionGranularities {
HOUR = 'hour',
DAY = 'day',
WEEK = 'week',
MONTH = 'month',
YEAR = 'year',
}

export type TimeDimension = {
dimension: string;
dateRange?: string | string[];
granularity?: TimeDimensionGranularities;
};

export type Query = {
measures?: string[];
dimensions?: string[];
filters?: Filter[];
timeDimensions?: TimeDimension[];
segments?: string[];
limit?: number;
offset?: number;
order?: {
[key: string]: QueryOrderOptions;
};
timezone?: string;
renewQuery?: boolean;
ungrouped?: boolean;
};

export class CubejsApi {
new(apiToken: string, options: CubeJSApiOptions): CubejsApi;

load(query: Query, options, callback): void;
load(query: Query, options): Promise<ResultSet>;

sql(query: Query, options, callback): void;
sql(query: Query, options): Promise<ResultSet>;

meta(options, callback): void;
meta(options): Promise<ResultSet>;
}

declare function cubejs(
apiToken: string,
options: CubeJSApiOptions,
): CubejsApi;

export default cubejs;
1 change: 1 addition & 0 deletions packages/cubejs-client-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
},
"description": "cube.js client",
"main": "dist/cubejs-client-core.js",
"types": "dist/index.d.ts",
"author": "Statsbot, Inc.",
"dependencies": {
"@babel/runtime": "^7.1.2",
Expand Down

0 comments on commit abdf089

Please sign in to comment.