mirror of
https://github.com/apache/superset.git
synced 2024-09-19 20:19:37 -04:00
Remove unnecessary export types and reorganize types (#99)
* fix re-export types in translation * Fix more types * reorganize type in chart package * Fix unit tests * remove Array<> in favor of []
This commit is contained in:
parent
dba200aa84
commit
80290426ec
@ -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<AnnotationLayerMetadata>): Promise<AnnotationData> {
|
||||
loadAnnotations(annotationLayers?: AnnotationLayerMetadata[]): Promise<AnnotationData> {
|
||||
if (Array.isArray(annotationLayers) && annotationLayers.length > 0) {
|
||||
return Promise.all(annotationLayers.map(layer => this.loadAnnotation(layer))).then(results =>
|
||||
annotationLayers.reduce((prev, layer, i) => {
|
||||
|
@ -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';
|
||||
|
@ -2,28 +2,26 @@ interface LookupTable {
|
||||
[key: string]: boolean;
|
||||
}
|
||||
|
||||
export interface ChartMetadataConfig {
|
||||
name: string;
|
||||
canBeAnnotationTypes?: Array<string>;
|
||||
credits?: Array<string>;
|
||||
description?: string;
|
||||
show?: boolean;
|
||||
supportedAnnotationTypes?: Array<string>;
|
||||
thumbnail: string;
|
||||
useLegacyApi?: boolean;
|
||||
}
|
||||
|
||||
export default class ChartMetadata {
|
||||
name: string;
|
||||
canBeAnnotationTypesLookup: LookupTable;
|
||||
credits: Array<string>;
|
||||
credits: string[];
|
||||
description: string;
|
||||
show: boolean;
|
||||
supportedAnnotationTypes: Array<string>;
|
||||
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 = [],
|
||||
|
@ -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<T extends FormData> {
|
||||
interface ChartPluginConfig<T extends FormData> {
|
||||
metadata: ChartMetadata;
|
||||
// use buildQuery for immediate value
|
||||
buildQuery?: BuildQueryFunction<T>;
|
||||
|
@ -12,11 +12,11 @@ type SnakeCaseDatasource = PlainObject;
|
||||
type CamelCaseFormData = PlainObject;
|
||||
type SnakeCaseFormData = PlainObject;
|
||||
type QueryData = PlainObject;
|
||||
type Filters = Array<any>;
|
||||
type Filters = any[];
|
||||
type HandlerFunction = (...args: any[]) => void;
|
||||
type ChartPropsSelector = (c: ChartPropsConfig) => ChartProps;
|
||||
|
||||
export interface ChartPropsConfig {
|
||||
interface ChartPropsConfig {
|
||||
annotationData?: AnnotationData;
|
||||
datasource?: SnakeCaseDatasource;
|
||||
filters?: Filters;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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<AdhocMetric>;
|
||||
|
||||
export class Metrics {
|
||||
export default class Metrics {
|
||||
// Use Array to maintain insertion order for metrics that are order sensitive
|
||||
private metrics: Metric[];
|
||||
|
@ -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<QueryObject>;
|
||||
}
|
||||
|
||||
export function buildQueryContext(
|
||||
export default function buildQueryContext(
|
||||
formData: FormData,
|
||||
buildQuery: (baseQueryObject: QueryObject) => QueryObject[] = WRAP_IN_ARRAY,
|
||||
): QueryContext {
|
||||
|
@ -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<T extends FormData>(formData: T): QueryObject {
|
||||
export default function buildQueryObject<T extends FormData>(formData: T): QueryObject {
|
||||
return {
|
||||
granularity: getGranularity(formData),
|
||||
metrics: new Metrics(formData).getMetrics(),
|
||||
|
@ -0,0 +1,6 @@
|
||||
/* eslint-disable import/prefer-default-export */
|
||||
|
||||
export type AnnotationLayerMetadata = {
|
||||
name: string;
|
||||
sourceType?: string;
|
||||
};
|
@ -0,0 +1,6 @@
|
||||
/* eslint-disable import/prefer-default-export */
|
||||
|
||||
export enum DatasourceType {
|
||||
Table = 'table',
|
||||
Druid = 'druid',
|
||||
}
|
@ -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<Record<MetricKey, FormDataMetric | FormDataMetric[]>>;
|
||||
|
||||
export type AnnotationLayerMetadata = {
|
||||
name: string;
|
||||
sourceType?: string;
|
||||
};
|
||||
|
||||
type BaseFormData = {
|
||||
datasource: string;
|
||||
viz_type: string;
|
||||
annotation_layers?: Array<AnnotationLayerMetadata>;
|
||||
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;
|
||||
}
|
@ -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<AdhocMetric>;
|
@ -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<T extends FormData> = (formData: T) => QueryContext;
|
||||
|
||||
export type TransformPropsFunction = (
|
||||
chartProps: ChartProps,
|
||||
) => {
|
||||
[key: string]: any;
|
||||
};
|
@ -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' }],
|
||||
});
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { DatasourceKey } from '../../src/query/DatasourceKey';
|
||||
import { DatasourceKey } from '../../src';
|
||||
|
||||
describe('DatasourceKey', () => {
|
||||
const tableKey = '5__table';
|
||||
|
@ -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;
|
@ -1,4 +1,4 @@
|
||||
import { buildQueryContext } from '../../src/query/buildQueryContext';
|
||||
import { buildQueryContext } from '../../src';
|
||||
|
||||
describe('queryContextBuilder', () => {
|
||||
it('should build datasource for table sources', () => {
|
||||
|
@ -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;
|
||||
|
@ -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';
|
||||
|
@ -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<SupersetClientResponse>;
|
||||
get: (request: RequestConfig) => Promise<SupersetClientResponse>;
|
||||
getInstance: (maybeClient?: SupersetClientClass) => SupersetClientClass;
|
||||
init: (force?: boolean) => Promise<string | undefined>;
|
||||
isAuthenticated: () => boolean;
|
||||
post: (request: RequestConfig) => Promise<SupersetClientResponse>;
|
||||
put: (request: RequestConfig) => Promise<SupersetClientResponse>;
|
||||
reAuthenticate: () => Promise<string | undefined>;
|
||||
request: (request: RequestConfig) => Promise<SupersetClientResponse>;
|
||||
reset: () => void;
|
||||
}
|
||||
|
||||
const SupersetClient: SupersetClientInterface = {
|
||||
configure: (config?: ClientConfig): SupersetClientClass => {
|
||||
singletonClient = new SupersetClientClass(config);
|
||||
|
@ -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<string | undefined>;
|
||||
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;
|
||||
|
@ -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';
|
||||
|
@ -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<string | undefined>;
|
||||
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<SupersetClientResponse>;
|
||||
get: (request: RequestConfig) => Promise<SupersetClientResponse>;
|
||||
getInstance: (maybeClient?: SupersetClientClass) => SupersetClientClass;
|
||||
init: (force?: boolean) => Promise<string | undefined>;
|
||||
isAuthenticated: () => boolean;
|
||||
post: (request: RequestConfig) => Promise<SupersetClientResponse>;
|
||||
put: (request: RequestConfig) => Promise<SupersetClientResponse>;
|
||||
reAuthenticate: () => Promise<string | undefined>;
|
||||
request: (request: RequestConfig) => Promise<SupersetClientResponse>;
|
||||
reset: () => void;
|
||||
}
|
||||
|
||||
export type SupersetClientResponse = Response | JsonTextResponse;
|
||||
|
@ -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';
|
||||
|
||||
|
@ -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';
|
||||
|
@ -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;
|
||||
|
@ -1,10 +1,5 @@
|
||||
/* eslint no-console: 0 */
|
||||
|
||||
export enum OverwritePolicy {
|
||||
ALLOW = 'ALLOW',
|
||||
PROHIBIT = 'PROHIBIT',
|
||||
WARN = 'WARN',
|
||||
}
|
||||
import { OverwritePolicy } from '../types';
|
||||
|
||||
interface ItemWithValue<T> {
|
||||
value: T;
|
||||
|
@ -1,6 +1,6 @@
|
||||
import Registry, { RegistryConfig } from './Registry';
|
||||
|
||||
export interface RegistryWithDefaultKeyConfig extends RegistryConfig {
|
||||
interface RegistryWithDefaultKeyConfig extends RegistryConfig {
|
||||
initialDefaultKey?: string;
|
||||
setFirstItemAsDefault?: boolean;
|
||||
}
|
||||
|
@ -0,0 +1,7 @@
|
||||
/* eslint-disable import/prefer-default-export */
|
||||
|
||||
export enum OverwritePolicy {
|
||||
ALLOW = 'ALLOW',
|
||||
PROHIBIT = 'PROHIBIT',
|
||||
WARN = 'WARN',
|
||||
}
|
@ -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', () => {
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -1,2 +1,2 @@
|
||||
export { configure, t, tn } from './TranslatorSingleton';
|
||||
export { TranslatorConfig, LanguagePack } from './Translator';
|
||||
export * from './types';
|
||||
|
@ -20,3 +20,7 @@ export interface Jed {
|
||||
ifPlural(value: number, plural: string): Jed;
|
||||
fetch(...args: any[]): string;
|
||||
}
|
||||
|
||||
export interface TranslatorConfig {
|
||||
languagePack?: LanguagePack;
|
||||
}
|
Loading…
Reference in New Issue
Block a user