diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/clients/ChartClient.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/clients/ChartClient.ts index 6c2e7e0d9b..86b007bbdf 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/clients/ChartClient.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/clients/ChartClient.ts @@ -7,7 +7,8 @@ import { SupersetClientClass, } from '@superset-ui/connection'; import getChartBuildQueryRegistry from '../registries/ChartBuildQueryRegistrySingleton'; -import { FormData, AnnotationLayerMetadata } from '../query/FormData'; +import { AnnotationLayerMetadata } from '../types/Annotation'; +import { FormData } from '../types/FormData'; export type SliceIdAndOrFormData = | { @@ -29,14 +30,14 @@ interface ChartData { queryData: object; } -export interface ChartClientConfig { - client?: SupersetClientInterface | SupersetClientClass; -} - -export class ChartClient { +export default class ChartClient { readonly client: SupersetClientInterface | SupersetClientClass; - constructor(config: ChartClientConfig = {}) { + constructor( + config: { + client?: SupersetClientInterface | SupersetClientClass; + } = {}, + ) { const { client = SupersetClient } = config; this.client = client; } @@ -102,7 +103,7 @@ export class ChartClient { return Promise.reject(new Error('This feature is not implemented yet.')); } - loadAnnotations(annotationLayers?: Array): Promise { + loadAnnotations(annotationLayers?: AnnotationLayerMetadata[]): Promise { if (Array.isArray(annotationLayers) && annotationLayers.length > 0) { return Promise.all(annotationLayers.map(layer => this.loadAnnotation(layer))).then(results => annotationLayers.reduce((prev, layer, i) => { diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/index.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/index.ts index bad2cd6638..0c4e191684 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/index.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/index.ts @@ -1,12 +1,7 @@ -export { ChartClient, ChartClientConfig } from './clients/ChartClient'; -export { default as ChartMetadata, ChartMetadataConfig } from './models/ChartMetadata'; -export { - default as ChartPlugin, - ChartPluginConfig, - BuildQueryFunction, - TransformPropsFunction, -} from './models/ChartPlugin'; -export { default as ChartProps, ChartPropsConfig } from './models/ChartProps'; +export { default as ChartClient } from './clients/ChartClient'; +export { default as ChartMetadata } from './models/ChartMetadata'; +export { default as ChartPlugin } from './models/ChartPlugin'; +export { default as ChartProps } from './models/ChartProps'; export { default as createLoadableRenderer } from './components/createLoadableRenderer'; export { default as reactify } from './components/reactify'; @@ -21,6 +16,10 @@ export { default as getChartTransformPropsRegistry, } from './registries/ChartTransformPropsRegistrySingleton'; -export { QueryContext, buildQueryContext } from './query/buildQueryContext'; -export { DatasourceType, DatasourceKey } from './query/DatasourceKey'; -export { FormData } from './query/FormData'; +export { default as buildQueryContext } from './query/buildQueryContext'; +export { default as DatasourceKey } from './query/DatasourceKey'; + +export * from './types/Annotation'; +export * from './types/Datasource'; +export * from './types/FormData'; +export * from './types/Query'; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/models/ChartMetadata.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/models/ChartMetadata.ts index a635c3b981..1172d28cce 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/models/ChartMetadata.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/models/ChartMetadata.ts @@ -2,28 +2,26 @@ interface LookupTable { [key: string]: boolean; } -export interface ChartMetadataConfig { - name: string; - canBeAnnotationTypes?: Array; - credits?: Array; - description?: string; - show?: boolean; - supportedAnnotationTypes?: Array; - thumbnail: string; - useLegacyApi?: boolean; -} - export default class ChartMetadata { name: string; canBeAnnotationTypesLookup: LookupTable; - credits: Array; + credits: string[]; description: string; show: boolean; - supportedAnnotationTypes: Array; + supportedAnnotationTypes: string[]; thumbnail: string; useLegacyApi: boolean; - constructor(config: ChartMetadataConfig) { + constructor(config: { + name: string; + canBeAnnotationTypes?: string[]; + credits?: string[]; + description?: string; + show?: boolean; + supportedAnnotationTypes?: string[]; + thumbnail: string; + useLegacyApi?: boolean; + }) { const { name, canBeAnnotationTypes = [], diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/models/ChartPlugin.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/models/ChartPlugin.ts index 6b08f5f2cc..8df1801f28 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/models/ChartPlugin.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/models/ChartPlugin.ts @@ -1,12 +1,12 @@ import { isRequired, Plugin } from '@superset-ui/core'; import ChartMetadata from './ChartMetadata'; import ChartProps from './ChartProps'; -import { FormData } from '../query/FormData'; -import { QueryContext } from '../query/buildQueryContext'; import getChartMetadataRegistry from '../registries/ChartMetadataRegistrySingleton'; import getChartBuildQueryRegistry from '../registries/ChartBuildQueryRegistrySingleton'; import getChartComponentRegistry from '../registries/ChartComponentRegistrySingleton'; import getChartTransformPropsRegistry from '../registries/ChartTransformPropsRegistrySingleton'; +import { FormData } from '../types/FormData'; +import { QueryContext } from '../types/Query'; const IDENTITY = (x: any) => x; @@ -21,7 +21,7 @@ export type TransformPropsFunction = ( [key: string]: any; }; -export interface ChartPluginConfig { +interface ChartPluginConfig { metadata: ChartMetadata; // use buildQuery for immediate value buildQuery?: BuildQueryFunction; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/models/ChartProps.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/models/ChartProps.ts index 448768dbdd..6d60a1dfa9 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/models/ChartProps.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/models/ChartProps.ts @@ -12,11 +12,11 @@ type SnakeCaseDatasource = PlainObject; type CamelCaseFormData = PlainObject; type SnakeCaseFormData = PlainObject; type QueryData = PlainObject; -type Filters = Array; +type Filters = any[]; type HandlerFunction = (...args: any[]) => void; type ChartPropsSelector = (c: ChartPropsConfig) => ChartProps; -export interface ChartPropsConfig { +interface ChartPropsConfig { annotationData?: AnnotationData; datasource?: SnakeCaseDatasource; filters?: Filters; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/DatasourceKey.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/DatasourceKey.ts index e0a8b1a6d5..db69f57a56 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/DatasourceKey.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/DatasourceKey.ts @@ -1,9 +1,6 @@ -export enum DatasourceType { - Table = 'table', - Druid = 'druid', -} +import { DatasourceType } from '../types/Datasource'; -export class DatasourceKey { +export default class DatasourceKey { readonly id: number; readonly type: DatasourceType; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/Metric.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/Metrics.ts similarity index 55% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/Metric.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/Metrics.ts index f1cd8f1436..1e517609cb 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/Metric.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/Metrics.ts @@ -1,61 +1,9 @@ -import { Column } from './Column'; -import { FormData } from './FormData'; +import { FormData } from '../types/FormData'; +import { MetricKey, Metric, FormDataMetric, AdhocMetric, ExpressionType } from '../types/Metric'; export const LABEL_MAX_LENGTH = 43; -// Note that the values of MetricKeys are lower_snake_case because they're -// used as keys of form data jsons. -export enum MetricKey { - METRIC = 'metric', - METRICS = 'metrics', - PERCENT_METRICS = 'percent_metrics', - RIGHT_AXIS_METRIC = 'metric_2', - SECONDARY_METRIC = 'secondary_metric', - X = 'x', - Y = 'y', - SIZE = 'size', -} - -export enum Aggregate { - AVG = 'AVG', - COUNT = 'COUNT ', - COUNT_DISTINCT = 'COUNT_DISTINCT', - MAX = 'MAX', - MIN = 'MIN', - SUM = 'SUM', -} - -export enum ExpressionType { - SIMPLE = 'SIMPLE', - SQL = 'SQL', -} - -interface AdhocMetricSimple { - expressionType: ExpressionType.SIMPLE; - column: Column; - aggregate: Aggregate; -} - -interface AdhocMetricSQL { - expressionType: ExpressionType.SQL; - sqlExpression: string; -} - -export type AdhocMetric = { - label?: string; - optionName?: string; -} & (AdhocMetricSimple | AdhocMetricSQL); - -// Type of metrics in form data -export type FormDataMetric = string | AdhocMetric; - -// Type of Metric the client provides to server after unifying various forms -// of metrics in form data -export type Metric = { - label: string; -} & Partial; - -export class Metrics { +export default class Metrics { // Use Array to maintain insertion order for metrics that are order sensitive private metrics: Metric[]; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/buildQueryContext.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/buildQueryContext.ts index a62cce56f6..6fca94c906 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/buildQueryContext.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/buildQueryContext.ts @@ -1,18 +1,11 @@ -import { buildQueryObject, QueryObject } from './buildQueryObject'; -import { DatasourceKey, DatasourceType } from './DatasourceKey'; -import { FormData } from './FormData'; +import buildQueryObject from './buildQueryObject'; +import DatasourceKey from './DatasourceKey'; +import { FormData } from '../types/FormData'; +import { QueryContext, QueryObject } from '../types/Query'; const WRAP_IN_ARRAY = (baseQueryObject: QueryObject) => [baseQueryObject]; -export interface QueryContext { - datasource: { - id: number; - type: DatasourceType; - }; - queries: Array; -} - -export function buildQueryContext( +export default function buildQueryContext( formData: FormData, buildQuery: (baseQueryObject: QueryObject) => QueryObject[] = WRAP_IN_ARRAY, ): QueryContext { diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/buildQueryObject.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/buildQueryObject.ts index 80229038d4..385610fa13 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/buildQueryObject.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/buildQueryObject.ts @@ -1,11 +1,9 @@ -import { FormData, getGranularity } from './FormData'; -import { Metric, Metrics } from './Metric'; +import Metrics from './Metrics'; +import { QueryObject } from '../types/Query'; +import { FormData } from '../types/FormData'; -// TODO: fill out the rest of the query object -export interface QueryObject { - granularity: string; - groupby?: string[]; - metrics?: Metric[]; +function getGranularity(formData: FormData): string { + return 'granularity_sqla' in formData ? formData.granularity_sqla : formData.granularity; } // Build the common segments of all query objects (e.g. the granularity field derived from @@ -13,7 +11,7 @@ export interface QueryObject { // buildQuery method for each viz type (see `wordcloud/buildQuery.ts` for an example). // Note the type of the formData argument passed in here is the type of the formData for a // specific viz, which is a subtype of the generic formData shared among all viz types. -export function buildQueryObject(formData: T): QueryObject { +export default function buildQueryObject(formData: T): QueryObject { return { granularity: getGranularity(formData), metrics: new Metrics(formData).getMetrics(), diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Annotation.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Annotation.ts new file mode 100644 index 0000000000..89a46cfca0 --- /dev/null +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Annotation.ts @@ -0,0 +1,6 @@ +/* eslint-disable import/prefer-default-export */ + +export type AnnotationLayerMetadata = { + name: string; + sourceType?: string; +}; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/Column.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Column.ts similarity index 100% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/Column.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Column.ts diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Datasource.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Datasource.ts new file mode 100644 index 0000000000..7e981b416e --- /dev/null +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Datasource.ts @@ -0,0 +1,6 @@ +/* eslint-disable import/prefer-default-export */ + +export enum DatasourceType { + Table = 'table', + Druid = 'druid', +} diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/FormData.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/FormData.ts similarity index 76% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/FormData.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/FormData.ts index e6c4df7fd0..4497c49099 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/query/FormData.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/FormData.ts @@ -1,6 +1,8 @@ /* eslint camelcase: 0 */ +/* eslint-disable import/prefer-default-export */ // FormData uses snake_cased keys. import { FormDataMetric, MetricKey } from './Metric'; +import { AnnotationLayerMetadata } from './Annotation'; // Type signature and utility functions for formData shared by all viz types // It will be gradually filled out as we build out the query object @@ -11,15 +13,10 @@ import { FormDataMetric, MetricKey } from './Metric'; // unified into a proper Metric type during buildQuery (see `/query/Metrics.ts`). type Metrics = Partial>; -export type AnnotationLayerMetadata = { - name: string; - sourceType?: string; -}; - type BaseFormData = { datasource: string; viz_type: string; - annotation_layers?: Array; + annotation_layers?: AnnotationLayerMetadata[]; } & Metrics; // FormData is either sqla-based or druid-based @@ -32,7 +29,3 @@ type DruidFormData = { } & BaseFormData; export type FormData = SqlaFormData | DruidFormData; - -export function getGranularity(formData: FormData): string { - return 'granularity_sqla' in formData ? formData.granularity_sqla : formData.granularity; -} diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Metric.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Metric.ts new file mode 100644 index 0000000000..13291970ed --- /dev/null +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Metric.ts @@ -0,0 +1,53 @@ +import { Column } from './Column'; + +// Note that the values of MetricKeys are lower_snake_case because they're +// used as keys of form data jsons. +export enum MetricKey { + METRIC = 'metric', + METRICS = 'metrics', + PERCENT_METRICS = 'percent_metrics', + RIGHT_AXIS_METRIC = 'metric_2', + SECONDARY_METRIC = 'secondary_metric', + X = 'x', + Y = 'y', + SIZE = 'size', +} + +export enum Aggregate { + AVG = 'AVG', + COUNT = 'COUNT ', + COUNT_DISTINCT = 'COUNT_DISTINCT', + MAX = 'MAX', + MIN = 'MIN', + SUM = 'SUM', +} + +export enum ExpressionType { + SIMPLE = 'SIMPLE', + SQL = 'SQL', +} + +interface AdhocMetricSimple { + expressionType: ExpressionType.SIMPLE; + column: Column; + aggregate: Aggregate; +} + +interface AdhocMetricSQL { + expressionType: ExpressionType.SQL; + sqlExpression: string; +} + +export type AdhocMetric = { + label?: string; + optionName?: string; +} & (AdhocMetricSimple | AdhocMetricSQL); + +// Type of metrics in form data +export type FormDataMetric = string | AdhocMetric; + +// Type of Metric the client provides to server after unifying various forms +// of metrics in form data +export type Metric = { + label: string; +} & Partial; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Query.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Query.ts new file mode 100644 index 0000000000..6c67db1ce0 --- /dev/null +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/src/types/Query.ts @@ -0,0 +1,26 @@ +import ChartProps from '../models/ChartProps'; +import { DatasourceType } from './Datasource'; +import { FormData } from './FormData'; +import { Metric } from './Metric'; + +export interface QueryObject { + granularity: string; + groupby?: string[]; + metrics?: Metric[]; +} + +export interface QueryContext { + datasource: { + id: number; + type: DatasourceType; + }; + queries: QueryObject[]; +} + +export type BuildQueryFunction = (formData: T) => QueryContext; + +export type TransformPropsFunction = ( + chartProps: ChartProps, +) => { + [key: string]: any; +}; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/models/ChartPlugin.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/models/ChartPlugin.test.ts index 7c49024796..241b6f003e 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/models/ChartPlugin.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/models/ChartPlugin.test.ts @@ -20,7 +20,7 @@ describe('ChartPlugin', () => { describe('new ChartPlugin()', () => { const FakeChart = () => 'test'; - const buildQuery = (formData: FormData) => ({ + const buildQuery = (_: FormData) => ({ datasource: { id: 1, type: DatasourceType.Table }, queries: [{ granularity: 'day' }], }); diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/DatasourceKey.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/DatasourceKey.test.ts index b404cabd17..1bb1d015e6 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/DatasourceKey.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/DatasourceKey.test.ts @@ -1,4 +1,4 @@ -import { DatasourceKey } from '../../src/query/DatasourceKey'; +import { DatasourceKey } from '../../src'; describe('DatasourceKey', () => { const tableKey = '5__table'; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/Metric.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/Metrics.test.ts similarity index 93% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/Metric.test.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/Metrics.test.ts index 020cb3ad27..524052a46c 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/Metric.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/Metrics.test.ts @@ -1,11 +1,6 @@ -import { ColumnType } from '../../src/query/Column'; -import { - AdhocMetric, - Aggregate, - ExpressionType, - LABEL_MAX_LENGTH, - Metrics, -} from '../../src/query/Metric'; +import { ColumnType } from '../../src/types/Column'; +import { AdhocMetric, Aggregate, ExpressionType } from '../../src/types/Metric'; +import Metrics, { LABEL_MAX_LENGTH } from '../../src/query/Metrics'; describe('Metrics', () => { let metrics: Metrics; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/buildQueryContext.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/buildQueryContext.test.ts index c4810eddd6..e4b62f66dd 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/buildQueryContext.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/buildQueryContext.test.ts @@ -1,4 +1,4 @@ -import { buildQueryContext } from '../../src/query/buildQueryContext'; +import { buildQueryContext } from '../../src'; describe('queryContextBuilder', () => { it('should build datasource for table sources', () => { diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/buildQueryObject.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/buildQueryObject.test.ts index 22fa40f884..bb71b7e04d 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/buildQueryObject.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-chart/test/query/buildQueryObject.test.ts @@ -1,4 +1,5 @@ -import { buildQueryObject, QueryObject } from '../../src/query/buildQueryObject'; +import buildQueryObject from '../../src/query/buildQueryObject'; +import { QueryObject } from '../../src'; describe('queryObjectBuilder', () => { let query: QueryObject; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-color/src/index.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-color/src/index.ts index 5bd259ec2f..d778fa1510 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-color/src/index.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-color/src/index.ts @@ -1,11 +1,10 @@ import * as CategoricalColorNamespace from './CategoricalColorNamespace'; export { CategoricalColorNamespace }; -export { ColorSchemeConfig } from './ColorScheme'; export { default as CategoricalColorScale } from './CategoricalColorScale'; export { default as CategoricalScheme } from './CategoricalScheme'; export { default as getCategoricalSchemeRegistry } from './CategoricalSchemeRegistrySingleton'; export { default as getSequentialSchemeRegistry } from './SequentialSchemeRegistrySingleton'; -export { default as SequentialScheme, SequentialSchemeConfig } from './SequentialScheme'; +export { default as SequentialScheme } from './SequentialScheme'; export const BRAND_COLOR = '#00A699'; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/src/SupersetClient.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/src/SupersetClient.ts index 94b4ceda38..283c2729b0 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/src/SupersetClient.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/src/SupersetClient.ts @@ -1,5 +1,5 @@ -import { ClientConfig, SupersetClientClass } from './SupersetClientClass'; -import { RequestConfig, SupersetClientResponse } from './types'; +import SupersetClientClass from './SupersetClientClass'; +import { ClientConfig, RequestConfig, SupersetClientInterface } from './types'; let singletonClient: SupersetClientClass | undefined; @@ -11,20 +11,6 @@ function getInstance(maybeClient: SupersetClientClass | undefined): SupersetClie return maybeClient; } -export interface SupersetClientInterface { - configure: (config?: ClientConfig) => SupersetClientClass; - delete: (request: RequestConfig) => Promise; - get: (request: RequestConfig) => Promise; - getInstance: (maybeClient?: SupersetClientClass) => SupersetClientClass; - init: (force?: boolean) => Promise; - isAuthenticated: () => boolean; - post: (request: RequestConfig) => Promise; - put: (request: RequestConfig) => Promise; - reAuthenticate: () => Promise; - request: (request: RequestConfig) => Promise; - reset: () => void; -} - const SupersetClient: SupersetClientInterface = { configure: (config?: ClientConfig): SupersetClientClass => { singletonClient = new SupersetClientClass(config); diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/src/SupersetClientClass.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/src/SupersetClientClass.ts index b1e2cc4060..2d2e0fa38c 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/src/SupersetClientClass.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/src/SupersetClientClass.ts @@ -1,29 +1,19 @@ import callApi from './callApi'; import { + ClientConfig, ClientTimeout, Credentials, + CsrfPromise, + CsrfToken, Headers, Host, Mode, - SupersetClientResponse, + Protocol, RequestConfig, + SupersetClientResponse, } from './types'; -type CsrfToken = string; -type CsrfPromise = Promise; -type Protocol = 'http:' | 'https:'; - -export interface ClientConfig { - credentials?: Credentials; - csrfToken?: CsrfToken; - headers?: Headers; - host?: Host; - protocol?: Protocol; - mode?: Mode; - timeout?: ClientTimeout; -} - -export class SupersetClientClass { +export default class SupersetClientClass { credentials: Credentials; csrfToken?: CsrfToken; csrfPromise?: CsrfPromise; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/src/index.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/src/index.ts index f2db59fa8b..a78cfd795b 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/src/index.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/src/index.ts @@ -1,4 +1,4 @@ export { default as callApi } from './callApi'; -export { default as SupersetClient, SupersetClientInterface } from './SupersetClient'; -export { SupersetClientClass } from './SupersetClientClass'; +export { default as SupersetClient } from './SupersetClient'; +export { default as SupersetClientClass } from './SupersetClientClass'; export * from './types'; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/src/types.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/src/types.ts index 07de12a479..b986788403 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/src/types.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/src/types.ts @@ -1,3 +1,5 @@ +import SupersetClientClass from './SupersetClientClass'; + export type Body = RequestInit['body']; export type Cache = RequestInit['cache']; export type Credentials = RequestInit['credentials']; @@ -61,4 +63,32 @@ export interface JsonTextResponse { text?: string; } +export type CsrfToken = string; +export type CsrfPromise = Promise; +export type Protocol = 'http:' | 'https:'; + +export interface ClientConfig { + credentials?: Credentials; + csrfToken?: CsrfToken; + headers?: Headers; + host?: Host; + protocol?: Protocol; + mode?: Mode; + timeout?: ClientTimeout; +} + +export interface SupersetClientInterface { + configure: (config?: ClientConfig) => SupersetClientClass; + delete: (request: RequestConfig) => Promise; + get: (request: RequestConfig) => Promise; + getInstance: (maybeClient?: SupersetClientClass) => SupersetClientClass; + init: (force?: boolean) => Promise; + isAuthenticated: () => boolean; + post: (request: RequestConfig) => Promise; + put: (request: RequestConfig) => Promise; + reAuthenticate: () => Promise; + request: (request: RequestConfig) => Promise; + reset: () => void; +} + export type SupersetClientResponse = Response | JsonTextResponse; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/test/SupersetClientClass.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/test/SupersetClientClass.test.ts index 717a0671b7..7098c14708 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/test/SupersetClientClass.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-connection/test/SupersetClientClass.test.ts @@ -1,7 +1,7 @@ import fetchMock from 'fetch-mock'; import { BigNumber } from 'bignumber.js'; -import { SupersetClientClass, ClientConfig } from '../src/SupersetClientClass'; +import { SupersetClientClass, ClientConfig } from '../src'; import throwIfCalled from './utils/throwIfCalled'; import { LOGIN_GLOB } from './fixtures/constants'; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/index.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/index.ts index 221f925017..e8d1e5f817 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/index.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/index.ts @@ -1,13 +1,12 @@ export { default as ExtensibleFunction } from './models/ExtensibleFunction'; export { default as Plugin } from './models/Plugin'; -export { default as Preset, PresetConfig } from './models/Preset'; -export { default as Registry, RegistryConfig, OverwritePolicy } from './models/Registry'; -export { - default as RegistryWithDefaultKey, - RegistryWithDefaultKeyConfig, -} from './models/RegistryWithDefaultKey'; +export { default as Preset } from './models/Preset'; +export { default as Registry } from './models/Registry'; +export { default as RegistryWithDefaultKey } from './models/RegistryWithDefaultKey'; export { default as convertKeysToCamelCase } from './utils/convertKeysToCamelCase'; export { default as isDefined } from './utils/isDefined'; export { default as isRequired } from './utils/isRequired'; export { default as makeSingleton } from './utils/makeSingleton'; + +export * from './types'; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/models/Preset.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/models/Preset.ts index 6b1b58315b..7114fc5564 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/models/Preset.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/models/Preset.ts @@ -1,19 +1,19 @@ import Plugin from './Plugin'; -export interface PresetConfig { - name?: string; - description?: string; - presets?: Preset[]; - plugins?: Plugin[]; -} - export default class Preset { name: string; description: string; presets: Preset[]; plugins: Plugin[]; - constructor(config: PresetConfig = {}) { + constructor( + config: { + name?: string; + description?: string; + presets?: Preset[]; + plugins?: Plugin[]; + } = {}, + ) { const { name = '', description = '', presets = [], plugins = [] } = config; this.name = name; this.description = description; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/models/Registry.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/models/Registry.ts index 35425f60d4..028044c552 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/models/Registry.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/models/Registry.ts @@ -1,10 +1,5 @@ /* eslint no-console: 0 */ - -export enum OverwritePolicy { - ALLOW = 'ALLOW', - PROHIBIT = 'PROHIBIT', - WARN = 'WARN', -} +import { OverwritePolicy } from '../types'; interface ItemWithValue { value: T; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/models/RegistryWithDefaultKey.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/models/RegistryWithDefaultKey.ts index 3b3d9f4e4b..1fbf2ad676 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/models/RegistryWithDefaultKey.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/models/RegistryWithDefaultKey.ts @@ -1,6 +1,6 @@ import Registry, { RegistryConfig } from './Registry'; -export interface RegistryWithDefaultKeyConfig extends RegistryConfig { +interface RegistryWithDefaultKeyConfig extends RegistryConfig { initialDefaultKey?: string; setFirstItemAsDefault?: boolean; } diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/types.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/types.ts new file mode 100644 index 0000000000..6b213b9479 --- /dev/null +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/src/types.ts @@ -0,0 +1,7 @@ +/* eslint-disable import/prefer-default-export */ + +export enum OverwritePolicy { + ALLOW = 'ALLOW', + PROHIBIT = 'PROHIBIT', + WARN = 'WARN', +} diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/test/models/Registry.test.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/test/models/Registry.test.ts index 9f7db195b8..7d629180da 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/test/models/Registry.test.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-core/test/models/Registry.test.ts @@ -1,6 +1,6 @@ /* eslint no-console: 0 */ import mockConsole from 'jest-mock-console'; -import Registry, { OverwritePolicy } from '../../src/models/Registry'; +import { Registry, OverwritePolicy } from '../../src'; describe('Registry', () => { it('exists', () => { diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-translation/src/Translator.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-translation/src/Translator.ts index 7c74d4ca64..e1eee46642 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-translation/src/Translator.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-translation/src/Translator.ts @@ -1,5 +1,11 @@ import UntypedJed from 'jed'; -import { Jed, LanguagePack } from './jed'; +import { TranslatorConfig } from './types'; + +interface Jed { + translate(input: string): Jed; + ifPlural(value: number, plural: string): Jed; + fetch(...args: any[]): string; +} const DEFAULT_LANGUAGE_PACK = { domain: 'superset', @@ -14,12 +20,6 @@ const DEFAULT_LANGUAGE_PACK = { }, }; -export { LanguagePack }; - -export interface TranslatorConfig { - languagePack?: LanguagePack; -} - export default class Translator { i18n: Jed; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-translation/src/TranslatorSingleton.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-translation/src/TranslatorSingleton.ts index da855d592c..9886072500 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-translation/src/TranslatorSingleton.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-translation/src/TranslatorSingleton.ts @@ -1,5 +1,6 @@ /* eslint no-console: 0 */ -import Translator, { TranslatorConfig } from './Translator'; +import Translator from './Translator'; +import { TranslatorConfig } from './types'; let singleton: Translator; let isConfigured = false; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-translation/src/index.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-translation/src/index.ts index 492599e2da..78eaa60106 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-translation/src/index.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-translation/src/index.ts @@ -1,2 +1,2 @@ export { configure, t, tn } from './TranslatorSingleton'; -export { TranslatorConfig, LanguagePack } from './Translator'; +export * from './types'; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-translation/src/jed.ts b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-translation/src/types.ts similarity index 87% rename from superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-translation/src/jed.ts rename to superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-translation/src/types.ts index 5f4d25fb07..dd80f9f286 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-translation/src/jed.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/packages/superset-ui-translation/src/types.ts @@ -20,3 +20,7 @@ export interface Jed { ifPlural(value: number, plural: string): Jed; fetch(...args: any[]): string; } + +export interface TranslatorConfig { + languagePack?: LanguagePack; +}